Function at 0x10023719
Capabilities:
Terminate thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 0xc]
push ebx
push esi
lea ecx, [eax + 0xe4]
push edi
mov edi, eax
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], ecx
cmp eax, ecx
ja case.0x10023644.23863
mov esi, dword [ebp + 8]
xor ebx, ebx
jmp 0x10023620
cmp edi, 0x68f1
ja 0x100236bb
je 0x100236a5
lea eax, [edi - 0x5d2b]
cmp eax, 0xc
ja case.0x100236d1.26870
movzx eax, byte [eax + 0x100238c0]
jmp dword [eax*4 + 0x100238ac]
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
or ecx, 1
mov dword [eax], ecx
add eax, 4
mov dword [ebp - 4], eax
jmp case.0x100236d1.26870
mov edx, dword [ebp - 4]
mov dword [ebp + 0xc], edx
jmp case.0x100236d1.26870
mov eax, dword [esi]
add eax, 3
and eax, 0xfffffffc
mov dword [ebp - 0x10], eax
add eax, 4
push ebx
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0xc]
push eax
push ebx
push ebx
push 0x15f0
call fcn.100078c0
add esp, 0x14
mov dword [ebp - 4], eax
cmp eax, ebx
jne case.0x100236d1.26870
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp esi, ebx
je case.0x10023644.23863
cmp dword [esi + 0x3c], ebx
je case.0x10023644.23863
jmp case.0x100236d1.26870
lea eax, [edi - 0x68f5]
cmp eax, 0xc
ja case.0x100236d1.26870
movzx ecx, byte [eax + 0x100238e4]
jmp dword [ecx*4 + 0x100238d0]
xlatb
mov ch, 0x4b
in eax, 0x81
lea edx, [esi + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea eax, [esi + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
jmp case.0x100236d1.26870
push ebx
push esi
push 0x4f22
lea ecx, [ebp - 0xc]
push ebx
push ecx
mov dword [esi + 0x54], ebx
mov dword [ebp - 0xc], 0xffffffff
call fcn.1004fe00
add esp, 0x14
jmp case.0x100236d1.26870
lea edx, [esi + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
lea eax, [ebp - 0xc]
push eax
push ebx
push 0x252b
lea ecx, [ebp - 8]
push ecx
push esi
mov dword [ebp - 0xc], 0xa4
mov dword [ebp - 8], ebx
call fcn.100654b0
push ebx
push 0x18e5
push ebx
push esi
call fcn.1004d9c0
add esp, 0x24
jmp case.0x100236d1.26870
lea eax, [esi + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x3c], ebx
je case.0x100236d1.26870
mov eax, 0x542e
mov dword [ebp - 0xc], eax
sub eax, 0x542e
je 0x100237c9
sub eax, 0x5e
je 0x100237a7
sub eax, 0x5e
jne 0x1002387e
mov eax, dword [esi + 0x44]
mov dword [esi + 0x40], ebx
cmp eax, ebx
je 0x1002379f
push eax
push 0x448d
push ebx
call fcn.10065d50
add esp, 0xc
mov dword [esi + 0x44], ebx
jmp 0x1002387e
mov eax, dword [esi + 0x40]
mov dword [esi], ebx
cmp eax, ebx
je 0x1002387e
push eax
push ebx
push ebx
push 0x78c0
call fcn.10022ac0
add esp, 0x10
jmp 0x1002387e
sal byte [0x8919ddf4], 1
pop esi
cmp al, 0x39
push ds
je 0x1002387e
mov edi, 0x7ed3
mov edi, edi
mov eax, edi
sub eax, 0x7ed3
je 0x1002380c
sub eax, 0x72
jne 0x10023816
mov al, byte [0xc4c137f4]
push 0x6886
push ebx
push ebx
call fcn.1004c4c0
add esp, 0xc
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esi + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
add edi, 0x39
cmp edi, 0x7f45
jbe 0x100237e0
cmp dword [esi], ebx
je 0x1002387b
mov edi, 0x558a
lea ebx, [ebx]
mov eax, edi
sub eax, 0x558a
je 0x10023852
sub eax, 0x1f
je 0x10023848
sub eax, 0x1f
jne 0x10023870
mov dword [esi + 0x5c], ebx
jmp 0x10023870
dec edi
stosb byte es:[edi], al
ret
dec esp
movsb byte es:[edi], byte [esi]
push esi
sbb esp, dword [edx - 0x75]
inc esi
pop eax
cmp eax, ebx
je 0x10023870
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
mov edx, dword [esi + 0x58]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
add edi, 0x1f
cmp edi, 0x55c8
jbe 0x10023830
mov edi, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
add eax, 0x5e
mov dword [ebp - 0xc], eax
cmp eax, 0x54ea
jbe 0x10023771
add edi, 4
mov dword [ebp - 8], edi
cmp edi, dword [ebp - 0x14]
jbe 0x10023620
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret