Function at 0x5a2b60
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov esi, esp
mov edi, ecx
mov eax, dword [0x808040]
xor eax, ebp
mov dword [esi + 0x78], eax
mov dword [esi + 0x70], 0xb
mov eax, dword [0x788e74]
mov cl, byte [eax + 0xb]
test cl, cl
jne 0x5a346d
mov dword [esi + 0x70], 0xb
mov al, byte [eax + 0xb]
test al, al
jne 0x5a3418
mov ebx, dword [edi + 0x2c]
test ebx, ebx
jne 0x5a33e8
mov eax, dword [edi]
mov ebx, dword [eax + 0xc]
mov ecx, ebx
call dword [0x8010bc]
mov ecx, edi
call ebx
mov ebx, eax
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov dword [esi + 0xc], ecx
call dword [0x8010bc]
mov ecx, ebx
push edi
call dword [esi + 0xc]
call fcn.004de800
test al, al
mov ebx, edi
mov dword [esi + 0x10], edi
je 0x5a2c36
mov ecx, dword [ebx + 0x24]
call fcn.00594d90
test al, al
jne 0x5a33d5
mov edi, dword [ebx + 0x30]
lea ecx, [esi + 0x44]
mov dword [ecx], 0xffffffff
call fcn.004bb6a0
test edi, edi
je 0x5a2c44
lea ebx, [esi + 0x20]
push 2
push ebx
call fcn.004dec20
add esp, 8
lea ecx, [esi + 0x44]
push ebx
call fcn.004bb6b0
mov ecx, ebx
mov ebx, dword [esi + 0x10]
call fcn.0055fd70
mov al, 1
mov dword [esi + 0x18], eax
jmp 0x5a2ee4
lea ecx, [esi + 0x44]
mov dword [ecx], 0xffffffff
call fcn.004bb6a0
mov dword [esi + 0x18], 0
jmp 0x5a2ee4
mov al, byte [ebx + 0x20]
test al, al
jne 0x5a2eb6
mov eax, dword [ebx]
mov edi, dword [eax + 0x10]
mov ecx, edi
call dword [0x8010bc]
mov ecx, ebx
call edi
test al, al
jne 0x5a2eb6
mov ecx, dword [ebx + 0x24]
call fcn.00594520
test al, al
jne 0x5a2eb6
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x8010bc]
mov ecx, ebx
call edi
mov edi, eax
mov eax, dword [eax]
mov ebx, dword [eax + 0x20]
mov ecx, ebx
call dword [0x8010bc]
mov ecx, edi
call ebx
mov ebx, dword [esi + 0x10]
jmp 0x5a2eb6
xor ebx, ebx
jmp 0x5a2ecb
mov ecx, ebx
call dword [0x8010bc]
mov ecx, edi
call ebx
mov dword [esi + 0x60], 0xb
mov eax, dword [0x788e74]
mov al, byte [eax + 0xb]
test al, al
mov edi, dword [esi + 0x10]
jne 0x5a3380
mov al, byte [edi + 0x20]
test al, al
jne 0x5a2cb0
mov eax, dword [edi]
mov ebx, dword [eax + 0x10]
mov ecx, ebx
call dword [0x8010bc]
mov ecx, edi
call ebx
test al, al
jne 0x5a2cb0
mov ecx, dword [edi + 0x24]
call fcn.00594520
test al, al
jne 0x5a2cb0
mov ebx, edi
cmp byte [esi + 0x18], 0
je 0x5a2d33
cmp byte [esi + 0x38], 1
je 0x5a3324
sub esp, 8
movq xmm0, qword [0x79d680]
movq qword [esp], xmm0
lea ecx, [esi + 0x20]
call fcn.00571720
mov byte [esi + 0x38], 1
mov ecx, dword [ebx + 0x24]
call fcn.00594d90
test al, al
jne 0x5a32f5
mov edi, dword [ebx + 0x30]
cmp dword [ebx + 0x34], edi
jne 0x5a3313
xor eax, eax
dec eax
mov dword [esi + 0x70], eax
mov dword [esi + 0x74], eax
mov eax, dword [ebx]
mov ebx, dword [eax + 0xc]
mov ecx, ebx
call dword [0x8010bc]
mov ecx, dword [esi + 0x10]
call ebx
mov ebx, eax
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x8010bc]
mov ecx, ebx
mov ebx, dword [esi + 0x10]
push ebx
lea eax, [esi + 0x70]
push eax
call edi
mov eax, dword [esi + 0x70]
test eax, eax
je 0x5a2c50
mov dword [esi + 0x60], eax
lea eax, [esi + 0x60]
push eax
call fcn.00533150
add esp, 4
mov dword [esi + 0xc], esp
mov eax, dword [ebx + 0x24]
mov dword [esi + 0x14], eax
sub esp, 0xc
mov edi, esp
lea ecx, [edi + 4]
lea eax, [esi + 0x70]
push eax
call fcn.00596a00
lea ebx, [esi + 0x68]
mov dword [edi], ebx
mov ecx, dword [esi + 0x14]
call fcn.005947c0
mov esp, dword [esi + 0xc]
lea ecx, [esi + 0x70]
push ebx
call fcn.00596ab0
mov ecx, ebx
call fcn.00596a30
mov eax, dword [esi + 0x70]
mov dword [esi + 0x58], eax
lea eax, [esi + 0x58]
push eax
call fcn.00533150
add esp, 4
cmp byte [esi + 0x18], 0
je 0x5a2e20
cmp byte [esi + 0x38], 1
lea edi, [esi + 0x20]
jne 0x5a2e05
mov ecx, edi
call fcn.00571960
mov byte [esi + 0x38], 0
sub esp, 8
movq xmm0, qword [0x79d680]
movq qword [esp], xmm0
mov ecx, edi
call fcn.00571720
mov byte [esi + 0x38], 1
mov dword [esi + 0x68], 0xffffffff
mov dword [esi + 0x6c], 0xffffffff
mov ebx, dword [esi + 0x10]
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x8010bc]
mov ecx, ebx
call edi
mov dword [esi + 0x14], eax
mov dword [esi + 0xc], esp
sub esp, 0x10
mov edi, esp
lea ecx, [edi + 4]
lea eax, [esi + 0x70]
push eax
call fcn.00596a00
lea eax, [esi + 0x68]
mov dword [edi], eax
mov dword [edi + 0xc], ebx
mov ebx, dword [esi + 0x14]
mov eax, dword [ebx]
mov edi, dword [eax + 0x10]
mov ecx, edi
call dword [0x8010bc]
mov ecx, ebx
mov ebx, dword [esi + 0x10]
call edi
mov esp, dword [esi + 0xc]
mov ecx, dword [ebx + 0x24]
call fcn.00594d90
test al, al
jne 0x5a32d2
mov edi, dword [ebx + 0x30]
cmp dword [ebx + 0x34], edi
lea eax, [esi + 0x70]
jne 0x5a32ff
cmp dword [esi + 0x70], 0
jne 0x5a32f2
mov ecx, eax
lea edi, [esi + 0x68]
push edi
call fcn.00596ab0
mov ecx, edi
call fcn.00596a30
mov eax, dword [esi + 0x70]
test eax, eax
jne 0x5a2d90
lea ecx, [esi + 0x70]
call fcn.00596a30
mov bl, 1
cmp byte [esi + 0x38], 1
jne 0x5a2ed9
lea ecx, [esi + 0x20]
call fcn.00571960
test bl, bl
mov ebx, dword [esi + 0x10]
je 0x5a313d
mov al, byte [ebx + 0x20]
test al, al
jne 0x5a313d
mov eax, dword [ebx]
mov ebx, dword [eax + 0x10]
mov ecx, ebx
call dword [0x8010bc]
mov ecx, dword [esi + 0x10]
call ebx
mov ebx, dword [esi + 0x10]
test al, al
jne 0x5a313d
mov ecx, dword [ebx + 0x24]
call fcn.00594520
test al, al
jne 0x5a313d
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x20], xmm0
movdqa xmmword [esi + 0x30], xmm0
xor eax, eax
mov byte [esi + 0x20], al
mov byte [esi + 0x38], al
mov dword [esi + 0x68], 0xb
mov eax, dword [0x788e74]
mov al, byte [eax + 0xb]
test al, al
jne 0x5a333a
mov eax, dword [ebx]
mov edi, ebx
mov ebx, dword [eax + 0xc]
mov ecx, ebx
call dword [0x8010bc]
mov ecx, edi
call ebx
mov edi, eax
mov eax, dword [eax]
mov ebx, dword [eax + 0x18]
cmp ebx, 0x5a2530
jne 0x5a2cb7
mov dword [esi + 0xc], edi
xor edi, edi
dec edi
mov dword [esi + 0x58], edi
mov dword [esi + 0x5c], edi
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
mov ebx, dword [eax + 0x14]
mov ecx, ebx
call dword [0x8010bc]
mov ecx, dword [esi + 0xc]
lea eax, [esi + 0x58]
push eax
call ebx
mov dword [esi + 0x54], edi
mov dword [esi + 0x50], edi
mov edi, dword [esi + 0xc]
lea eax, [esi + 0x48]
push eax
call fcn.00551cb0
add esp, 4
mov eax, dword [edi]
cmp dword [eax + 0x28], 0x5a2860
jne 0x5a311a
mov eax, dword [esi + 0x48]
mov dword [esi + 0x14], eax
mov ebx, dword [esi + 0x4c]
mov eax, dword [0x80d580]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [0x81fc68]
cmp ecx, dword [eax + 4]
jg 0x5a3294
cmp byte [0x81fc64], 0
je 0x5a33bb
mov eax, dword [0x81fc78]
mov ecx, dword [0x80d580]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x5a325a
mov dword [esi + 0x1c], ebx
mov ecx, dword [edi + 8]
mov eax, dword [edi + 0xc]
mov edx, ecx
or edx, eax
jne 0x5a302a
mov eax, dword [0x81fc74]
mov ecx, dword [0x81fc70]
mov edx, 0x3938700
add ecx, edx
mov edx, 0
adc eax, edx
mov edx, SysReAllocString
cmovo eax, edx
mov ebx, 0xffffffff
cmovo ecx, ebx
mov ebx, dword [esi + 0x14]
cmp ecx, ebx
mov edi, dword [esi + 0x1c]
sbb eax, edi
mov eax, 0x3938700
mov ecx, 0xf4240
cmovl eax, ecx
add eax, ebx
mov ecx, edi
mov edx, 0
adc ecx, edx
mov edx, SysReAllocString
cmovo ecx, edx
mov dword [esi + 0x6c], ecx
mov ecx, 0xffffffff
cmovo eax, ecx
mov dword [esi + 0x68], eax
mov dword [esi + 0x74], ecx
mov dword [esi + 0x70], ecx
xor eax, eax
mov dword [esi + 0x60], eax
mov dword [esi + 0x64], eax
xor eax, eax
sub esp, 0x14
mov dword [esp + 0x10], eax
movq xmm0, qword [esi + 0x60]
movq qword [esp + 4], xmm0
lea eax, [esi + 0x70]
mov dword [esp], eax
mov dword [esp + 0xc], 0xf4240
lea ecx, [esi + 0x68]
call fcn.00551cd0
mov eax, dword [esi + 0x70]
mov edx, dword [esi + 0x74]
sub eax, ebx
sbb edx, edi
seto bl
mov ecx, edx
sar ecx, 0x1f
test bl, bl
cmovne eax, ecx
add ecx, 0x80000000
test bl, bl
cmove ecx, edx
mov dword [esi + 0x50], eax
mov dword [esi + 0x54], ecx
mov edx, dword [esi + 0x58]
mov edi, dword [esi + 0x5c]
cmp edx, eax
mov ebx, edi
sbb ebx, ecx
cmovl eax, edx
cmovl ecx, edi
mov dword [esi + 0x74], ecx
mov dword [esi + 0x70], eax
sub esp, 8
movq xmm0, qword [esi + 0x70]
movq qword [esp], xmm0
mov ecx, dword [esi + 0xc]
call fcn.005a34d0
test al, al
jne 0x5a2cc3
jmp 0x5a31c4
sub esp, 0xc
movq xmm0, qword [esi + 0x48]
movq qword [esp + 4], xmm0
lea eax, [esi + 0x50]
mov dword [esp], eax
mov ecx, edi
call fcn.005a2860
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
jmp 0x5a30e0
mov eax, dword [ebx]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x8010bc]
mov ecx, ebx
call edi
mov edi, eax
mov eax, dword [eax]
mov ecx, dword [eax + 0x1c]
mov dword [esi + 0xc], ecx
call dword [0x8010bc]
mov ecx, edi
push ebx
call dword [esi + 0xc]
mov edi, dword [ebx + 0x2c]
test edi, edi
jne 0x5a3400
mov ecx, dword [ebx + 8]
mov dword [ebx + 8], 0
test ecx, ecx
jne 0x5a32dc
mov dword [esi + 0x70], 0xb
mov eax, dword [0x788e74]
mov cl, byte [eax + 0xb]
test cl, cl
jne 0x5a349c
mov dword [esi + 0x70], 0xb
mov al, byte [eax + 0xb]
test al, al
jne 0x5a3442
lea ecx, [esi + 0x44]
call fcn.0055fd70
mov ecx, dword [esi + 0x78]
xor ecx, ebp
call fcn.005c6b46
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.004e9e20
mov edi, dword [esi + 0x50]
mov ebx, dword [esi + 0x54]
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x5c]
cmp edi, eax
mov dword [esi + 0x14], ebx
sbb ebx, edx
jge 0x5a2cc3
mov ebx, eax
not ebx
mov ecx, edx
xor ecx, 0x7fffffff
or ecx, ebx
jne 0x5a321a
xor eax, eax
dec eax
mov dword [esi + 0x68], eax
mov eax, SysReAllocString
mov dword [esi + 0x6c], eax
sub esp, 8
movq xmm0, qword [esi + 0x68]
movq qword [esp], xmm0
mov ecx, dword [esi + 0xc]
call fcn.005a34d0
jmp 0x5a2cc3
xor ecx, ecx
dec ecx
add ecx, edi
mov ebx, SysReAllocString
adc ebx, dword [esi + 0x14]
add ecx, 2
adc ebx, 0
cmp ecx, 2
sbb ebx, 0
jb 0x5a31f2
sub eax, edi
sbb edx, dword [esi + 0x14]
seto bl
mov ecx, edx
sar ecx, 0x1f
test bl, bl
cmovne eax, ecx
add ecx, 0x80000000
test bl, bl
cmove ecx, edx
mov dword [esi + 0x68], eax
mov dword [esi + 0x6c], ecx
jmp 0x5a3200
push 0x81fc78
call fcn.005c580d
add esp, 4
cmp dword [0x81fc78], 0xffffffff
jne 0x5a3010
mov eax, dword [esi + 0x14]
mov dword [0x81fc70], eax
mov dword [0x81fc74], ebx
push 0x81fc78
call fcn.005c5887
add esp, 4
jmp 0x5a3010
push 0x81fc68
call fcn.005c580d
add esp, 4
cmp dword [0x81fc68], 0xffffffff
jne 0x5a2fe2
push 0x80be08
call fcn.005628a0
add esp, 4
mov byte [0x81fc64], al
push 0x81fc68
call fcn.005c5887
add esp, 4
jmp 0x5a2fe2
mov edi, 3
jmp 0x5a2e8e
lock dec dword [ecx + 4]
jne 0x5a3181
push 1
call fcn.0071a4c0
jmp 0x5a3181
int3
mov edi, 3
jmp 0x5a2d46
push edi
call fcn.004d8610
lea eax, [esi + 0x70]
add esp, 4
mov dword [ebx + 0x34], edi
jmp 0x5a2e9a
push edi
call fcn.004d8610
add esp, 4
mov dword [ebx + 0x34], edi
jmp 0x5a2d4f
lea ebx, [esi + 0x20]
mov ecx, ebx
call fcn.00571960
mov byte [ebx + 0x18], 0
mov ebx, dword [esi + 0x10]
jmp 0x5a2d17
movzx eax, al
mov dword [esi + 0x70], str.WorkerThread_active
push 0
push 0x45
push 0x782280
push 2
lea ecx, [esi + 0x70]
push ecx
lea ecx, [esi + 0x68]
push ecx
push eax
call fcn.004ab350
add esp, 0x1c
test byte [esi + 0x38], 1
je 0x5a2f49
lea ebx, [esi + 0x20]
mov ecx, ebx
call fcn.00571960
mov byte [ebx + 0x18], 0
mov ebx, dword [esi + 0x10]
jmp 0x5a2f49
movzx eax, al
mov ecx, dword [0x80e568]
xor ecx, dword [edi + 0x3c]
mov edx, dword [0x80e56c]
mov dword [esi + 0x74], edx
mov dword [esi + 0x70], ecx
mov dword [esi + 0x68], str.WorkerThread_active
lea ecx, [esi + 0x70]
push ecx
push 1
lea ecx, [esi + 0x68]
push ecx
lea ecx, [esi + 0x60]
push ecx
push eax
call fcn.004b4f80
add esp, 0x14
jmp 0x5a2cdd
mov dword [esi + 0x54], 0
mov dword [esi + 0x50], 0xf4240
xor ecx, ecx
mov eax, 0xf4240
jmp 0x5a30e0
lea ecx, [esi + 0x44]
mov dword [ecx], 0xffffffff
call fcn.004bb6a0
jmp 0x5a2c0b
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
mov dword [esi + 0xc], ecx
call dword [0x8010bc]
mov ecx, ebx
call dword [esi + 0xc]
jmp 0x5a2bb1
mov eax, dword [edi]
mov ecx, dword [eax + 8]
mov dword [esi + 0xc], ecx
call dword [0x8010bc]
mov ecx, edi
call dword [esi + 0xc]
jmp 0x5a316f
movzx eax, al
lea ecx, [esi + 0x20]
mov dword [ecx], str.WorkerThread_active
lea edx, [esi + 0x70]
push 0
push 0x42
push 0x782280
push 1
push ecx
push edx
push eax
call fcn.004ab350
add esp, 0x1c
jmp 0x5a2ba6
movzx eax, al
mov dword [esi + 0x20], str.WorkerThread_dead
push 8
push 0x49
push 0x782280
push 3
lea ecx, [esi + 0x20]
push ecx
lea ecx, [esi + 0x70]
push ecx
push eax
call fcn.004ab350
add esp, 0x1c
jmp 0x5a31aa
movzx eax, cl
lea ecx, [esi + 0x20]
mov dword [ecx], str.WorkerThread_born
lea edx, [esi + 0x70]
push 8
push 0x49
push 0x782280
push 3
push ecx
push edx
push eax
call fcn.004ab350
add esp, 0x1c
mov eax, dword [0x788e74]
jmp 0x5a2b94
movzx eax, cl
mov dword [esi + 0x20], str.WorkerThread_active
push 0
push 0x45
push 0x782280
push 2
lea ecx, [esi + 0x20]
push ecx
lea ecx, [esi + 0x70]
push ecx
push eax
call fcn.004ab350
add esp, 0x1c
mov eax, dword [0x788e74]
jmp 0x5a3198