diff options
Diffstat (limited to 'asm/rich4_clib.asm')
-rw-r--r-- | asm/rich4_clib.asm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/asm/rich4_clib.asm b/asm/rich4_clib.asm index d1e3b86..cb550e5 100644 --- a/asm/rich4_clib.asm +++ b/asm/rich4_clib.asm @@ -1,7 +1,12 @@ global clib_fopen +global clib_fclose extern fcn_00457135 extern fcn_004590b9 extern fcn_00457254 +extern fcn_00457902 +extern ref_00488f60 +extern ref_00488f64 +extern ref_004991d4 section .text @@ -63,4 +68,33 @@ add esp, 0xc pop ebx ret +clib_fclose: +push ebx +mov ebx, dword [esp + 8] +call dword [ref_00488f60] ; ucall: call dword [0x488f60] +mov eax, dword [ref_004991d4] ; mov eax, dword [0x4991d4] + +loc_004578d5: +test eax, eax +jne short loc_004578e6 ; jne 0x4578e6 +call dword [ref_00488f64] ; ucall: call dword [0x488f64] +mov eax, 0xffffffff +pop ebx +ret + +loc_004578e6: +cmp ebx, dword [eax + 4] +je short loc_004578ef ; je 0x4578ef +mov eax, dword [eax] +jmp short loc_004578d5 ; jmp 0x4578d5 + +loc_004578ef: +call dword [ref_00488f64] ; ucall: call dword [0x488f64] +push 1 +push ebx +call fcn_00457902 ; call 0x457902 +add esp, 8 +pop ebx +ret + section .data |