summaryrefslogtreecommitdiff
path: root/asm/rich4.asm
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2021-05-12 21:58:02 +0800
committerIru Cai <mytbk920423@gmail.com>2021-05-12 21:58:02 +0800
commitfb03ce1ad31943fd48cb15439ee4dbd08d300727 (patch)
tree43ee32102f52a83fedb27ed4e54c4a1571b22823 /asm/rich4.asm
parente4279971a21e7a28b5dee373e34cdf31269defbc (diff)
downloadrich4-fb03ce1ad31943fd48cb15439ee4dbd08d300727.tar.xz
move out mthread code
Diffstat (limited to 'asm/rich4.asm')
-rw-r--r--asm/rich4.asm239
1 files changed, 20 insertions, 219 deletions
diff --git a/asm/rich4.asm b/asm/rich4.asm
index ba35f0c..f152319 100644
--- a/asm/rich4.asm
+++ b/asm/rich4.asm
@@ -176,6 +176,26 @@ extern clib_rand
extern clib_srand
global _GetThreadPtr
+extern __AllocInitThreadData
+extern __NTAddThread
+extern __NTRemoveThread
+extern __NTThreadFini
+global clib_free
+global fcn_0045c836
+global fcn_0045e8ca
+global __GetThreadData
+global __InitThreadData
+global lib_calloc
+global __ReallocThreadData
+global ref_00488f78
+global ref_00488f7c
+global ref_00499954
+global _RWD_osbuild
+global _RWD_osmajor
+global __ThreadDataSize
+global __TlsIndex
+
+
section .text
db 0xcc
db 0xeb
@@ -121362,177 +121382,6 @@ fcn_0045a1f3:
push ref_0049932c ; push 0x49932c
jmp near loc_0045a155 ; jmp 0x45a155
-__MultipleThread:
-push ebx
-push esi
-call dword [cs:__imp__GetLastError@0] ; ucall: call dword cs:[0x4623ac]
-mov edx, dword [__TlsIndex] ; mov edx, dword [0x488f48]
-push edx
-mov esi, eax
-call dword [cs:__imp__TlsGetValue@4] ; ucall: call dword cs:[0x46241c]
-mov ebx, eax
-test eax, eax
-jne short loc_0045a223 ; jne 0x45a223
-call __GetThreadData ; call 0x45c6be
-jmp short loc_0045a22e ; jmp 0x45a22e
-
-loc_0045a223:
-cmp byte [eax + 0x53], 0
-je short loc_0045a230 ; je 0x45a230
-call __ReallocThreadData ; call 0x45c6f5
-
-loc_0045a22e:
-mov ebx, eax
-
-loc_0045a230:
-push esi
-call dword [cs:__imp__SetLastError@4] ; ucall: call dword cs:[0x462408]
-mov eax, ebx
-pop esi
-pop ebx
-ret
-
-__AllocInitThreadData:
-push ebx
-mov ebx, dword [esp + 8]
-test ebx, ebx
-jne short loc_0045a26d ; jne 0x45a26d
-mov edx, dword [__ThreadDataSize] ; mov edx, dword [0x4894b0]
-push edx
-push 1
-call lib_calloc ; call 0x45c62e
-add esp, 8
-mov ebx, eax
-test eax, eax
-je short loc_0045a26d ; je 0x45a26d
-mov edx, dword [__ThreadDataSize] ; mov edx, dword [0x4894b0]
-mov byte [eax + 0x52], 1
-mov dword [eax + 0xf0], edx
-
-loc_0045a26d:
-push ebx
-call __InitThreadData ; call 0x45c8d7
-add esp, 4
-mov eax, ebx
-pop ebx
-ret
-
-__NTThreadInit:
-call dword [cs:__imp__TlsAlloc@0] ; ucall: call dword cs:[0x462414]
-mov dx, word [_RWD_osbuild] ; mov dx, word [0x489355]
-mov dword [__TlsIndex], eax ; mov dword [0x488f48], eax
-cmp dx, 0x8000
-jb short loc_0045a2bb ; jb 0x45a2bb
-cmp byte [_RWD_osmajor], 4 ; cmp byte [0x489353], 4
-jae short loc_0045a2bb ; jae 0x45a2bb
-
-loc_0045a29d:
-mov edx, dword [__TlsIndex] ; mov edx, dword [0x488f48]
-cmp edx, 0xffffffff
-je short loc_0045a2bb ; je 0x45a2bb
-cmp edx, 2
-ja short loc_0045a2bb ; ja 0x45a2bb
-call dword [cs:__imp__TlsAlloc@0] ; ucall: call dword cs:[0x462414]
-mov dword [__TlsIndex], eax ; mov dword [0x488f48], eax
-jmp short loc_0045a29d ; jmp 0x45a29d
-
-loc_0045a2bb:
-cmp dword [__TlsIndex], 0xffffffff ; cmp dword [0x488f48], 0xffffffff
-setne al
-and eax, 0xff
-ret
-
-__NTAddThread:
-push ebx
-push esi
-cmp dword [__TlsIndex], 0xffffffff ; cmp dword [0x488f48], 0xffffffff
-jne short loc_0045a2db ; jne 0x45a2db
-
-loc_0045a2d6:
-xor eax, eax
-pop esi
-pop ebx
-ret
-
-loc_0045a2db:
-mov ebx, dword [esp + 0xc]
-push ebx
-call __AllocInitThreadData ; call 0x45a23d
-mov ebx, eax
-add esp, 4
-test eax, eax
-je short loc_0045a321 ; je 0x45a321
-push eax
-mov ecx, dword [eax + 0xda]
-push ecx
-call __AddThreadData ; call 0x45c7ca
-add esp, 8
-test eax, eax
-jne short loc_0045a30d ; jne 0x45a30d
-push ebx
-call clib_free ; call 0x456e11
-add esp, 4
-jmp short loc_0045a2d6 ; jmp 0x45a2d6
-
-loc_0045a30d:
-push ebx
-mov esi, dword [__TlsIndex] ; mov esi, dword [0x488f48]
-push esi
-call dword [cs:__imp__TlsSetValue@8] ; ucall: call dword cs:[0x462420]
-mov eax, 1
-
-loc_0045a321:
-pop esi
-pop ebx
-ret
-
-__NTRemoveThread:
-push ebx
-push esi
-mov edx, dword [__TlsIndex] ; mov edx, dword [0x488f48]
-cmp edx, 0xffffffff
-je short loc_0045a375 ; je 0x45a375
-push edx
-call dword [cs:__imp__TlsGetValue@4] ; ucall: call dword cs:[0x46241c]
-test eax, eax
-je short loc_0045a375 ; je 0x45a375
-mov ecx, dword [eax + 0xda]
-push ecx
-mov ebx, dword [eax + 0xde]
-call fcn_0045c836 ; call 0x45c836
-add esp, 4
-push 0
-mov esi, dword [__TlsIndex] ; mov esi, dword [0x488f48]
-push esi
-call dword [cs:__imp__TlsSetValue@8] ; ucall: call dword cs:[0x462420]
-test ebx, ebx
-je short loc_0045a375 ; je 0x45a375
-cmp dword [esp + 0xc], 0
-je short loc_0045a375 ; je 0x45a375
-push ebx
-call dword [cs:__imp__CloseHandle@4] ; ucall: call dword cs:[0x462348]
-
-loc_0045a375:
-pop esi
-pop ebx
-ret
-
-__ThreadExit:
-push 1
-call __NTRemoveThread ; call 0x45a324
-add esp, 4
-
-__NTThreadFini:
-mov edx, dword [__TlsIndex] ; mov edx, dword [0x488f48]
-cmp edx, 0xffffffff
-je short loc_0045a39f ; je 0x45a39f
-push edx
-call dword [cs:__imp__TlsFree@4] ; ucall: call dword cs:[0x462418]
-mov dword [__TlsIndex], 0xffffffff ; mov dword [0x488f48], 0xffffffff
-
-loc_0045a39f:
-ret
-
fcn_0045a4c0:
push ebx
@@ -125667,54 +125516,6 @@ pop esi
pop ebx
ret
-__AddThreadData:
-push ebx
-push esi
-push edi
-mov edi, dword [esp + 0x14]
-call dword [ref_00488f78] ; ucall: call dword [0x488f78]
-push 0x10
-mov esi, 1
-push esi
-call lib_calloc ; call 0x45c62e
-mov ebx, eax
-add esp, 8
-test eax, eax
-je short loc_0045c828 ; je 0x45c828
-push edi
-call fcn_0045e8ca ; call 0x45e8ca
-add esp, 4
-test eax, eax
-je short loc_0045c807 ; je 0x45c807
-push ebx
-call clib_free ; call 0x456e11
-xor esi, esi
-add esp, 4
-jmp short loc_0045c82a ; jmp 0x45c82a
-
-loc_0045c807:
-mov eax, dword [esp + 0x10]
-mov dword [ebx + 8], edi
-mov dword [ebx + 4], eax
-xor eax, eax
-mov al, byte [edi + 0x52]
-mov dword [ebx + 0xc], eax
-mov eax, dword [ref_00499954] ; mov eax, dword [0x499954]
-mov dword [ref_00499954], ebx ; mov dword [0x499954], ebx
-mov dword [ebx], eax
-jmp short loc_0045c82a ; jmp 0x45c82a
-
-loc_0045c828:
-xor esi, esi
-
-loc_0045c82a:
-call dword [ref_00488f7c] ; ucall: call dword [0x488f7c]
-mov eax, esi
-pop edi
-pop esi
-pop ebx
-ret
-
fcn_0045c836:
push ebx
push esi