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

Disassembly:
push 0xffffffffffffffff
push 0x874a16
mov eax, dword fs:[0]
push eax
sub esp, 0x88
push ebx
push ebp
push esi
push edi
mov eax, dword [0x8ce6f4]
xor eax, esp
push eax
lea eax, [esp + 0x9c]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x18], edi
xor ebp, ebp
mov dword [esp + 0x14], ebp
call fcn.007cff5d
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x5a6103
push 0x80004005
call fcn.004a8210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x64], eax
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x64]
push eax
lea edx, [esp + 0x64]
push edx
lea ecx, [edi + 0x70]
push 0x4289f8
mov dword [esp + 0xb4], ebp
call fcn.005ec920
cmp eax, ebp
je 0x5a63ec
add eax, 4
push eax
lea ecx, [esp + 0x68]
call fcn.004b1400
mov dword [esp + 0x70], ebp
mov dword [esp + 0x74], ebp
mov dword [esp + 0x78], ebp
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x80], ebp
mov dword [esp + 0x84], 0xa
push ebp
push 0x3b
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x34]
push edx
mov byte [esp + 0xb8], 1
call fcn.00539660
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a61af
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x70]
mov ebx, eax
cmp eax, ebp
je 0x5a63db
lea ecx, [ecx]
xor esi, esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], 0xa
xor eax, eax
cmp ebx, esi
setne al
mov byte [esp + 0xa4], 2
cmp eax, esi
je 0x5a60f9
mov edi, 2
push edi
push 0x3d
mov eax, ebx
mov ebx, dword [ebx]
lea ecx, [esp + 0x44]
push ecx
add eax, 8
push eax
lea edx, [esp + 0x34]
push edx
mov dword [esp + 0x68], ebx
call fcn.00539660
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a623b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x44], edi
jne 0x5a6276
mov eax, dword [esp + 0x40]
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
je 0x5a60f9
mov eax, dword [eax + 8]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.005c55a0
add esp, 8
mov ebp, eax
or dword [esp + 0x14], 1
mov byte [esp + 0xa4], 3
jmp 0x5a6295
push 0x402a88
lea ecx, [esp + 0x5c]
call fcn.004a8f10
mov ebp, eax
or dword [esp + 0x14], edi
mov dword [esp + 0xa4], 4
mov eax, dword [esp + 0x3c]
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
je 0x5a60f9
mov edi, dword [eax + 8]
mov esi, dword [esp + 0x18]
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x34]
push ecx
add esi, 0x100
push edi
mov ecx, esi
call fcn.005ec920
test eax, eax
jne 0x5a62fb
cmp dword [esi], eax
jne 0x5a62e9
mov edx, dword [esi + 8]
push 1
push edx
mov ecx, esi
call fcn.00635dd0
test al, al
je 0x5a6420
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
push eax
push ecx
push edi
mov ecx, esi
call fcn.005a5b90
mov ecx, dword [ebp]
mov esi, dword [eax + 4]
lea edi, [eax + 4]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x5a6356
cmp dword [esi + 0xc], 0
lea ebp, [esi + 0xc]
jl 0x5a634a
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a634a
push eax
call fcn.004a9b50
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebp], eax
dec eax
test eax, eax
jg 0x5a633f
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [edi], ebx
mov ebx, dword [esp + 0x54]
jmp 0x5a6356
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.004a8db0
test byte [esp + 0x14], 2
mov dword [esp + 0xa4], 3
je 0x5a638d
mov eax, dword [esp + 0x58]
and dword [esp + 0x14], 0xfffffffd
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a638d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test byte [esp + 0x14], 1
mov dword [esp + 0xa4], 2
je 0x5a63c4
mov eax, dword [esp + 0x28]
and dword [esp + 0x14], 0xfffffffe
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a63c4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x3c]
call fcn.004afe70
test ebx, ebx
jne 0x5a61c0
mov edi, dword [esp + 0x18]
xor ebp, ebp
lea ecx, [esp + 0x70]
mov byte [esp + 0xa4], 0
call fcn.004afe70
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x64]
push eax
lea edx, [esp + 0x64]
push edx
lea ecx, [edi + 0x100]
push 0x4289e8
call fcn.005ec920
cmp eax, ebp
je 0x5a642a
add eax, 4
push eax
lea ecx, [edi + 0x58]
call fcn.004aa540
jmp 0x5a64d2
push 0x8007000e
call fcn.004a8210
push 0
call fcn.008067e1
push eax
call fcn.00809fc2
mov ebx, dword [esp + 0x20]
lea esi, [ebx + 0x58]
call fcn.00809fd4
imul eax, eax, 0x12345678
push eax
push 0x409d08
push esi
call fcn.004aa600
add esp, 0x10
mov ecx, esp
mov dword [esp + 0x34], esp
push 0x402a88
call fcn.004a8f10
push ecx
mov ecx, esp
mov dword [esp + 0x68], esp
push 0x427d04
mov byte [esp + 0xb0], 5
call fcn.004a8f10
mov eax, dword [esi]
push 0xffffffffffffffff
push 0xffffffffffffffff
push ecx
sub eax, 0x10
mov dword [esp + 0x70], esp
mov edi, esp
push eax
mov byte [esp + 0xbc], 6
call fcn.004a9b50
add eax, 0x10
mov dword [edi], eax
mov ecx, esp
mov dword [esp + 0x84], esp
push 0x4289e8
mov byte [esp + 0xc0], 7
call fcn.0050c640
mov ecx, ebx
mov byte [esp + 0xbc], 0
call fcn.005a5df0
mov edi, ebx
xor ebp, ebp
call fcn.007cff5d
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x5a64ec
push 0x80004005
call fcn.004a8210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x34], eax
mov byte [esp + 0xa4], 8
call fcn.007cff5d
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x5a651e
push 0x80004005
call fcn.004a8210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x68], eax
lea esi, [edi + 0x5c]
push 0x4289e0
push esi
mov byte [esp + 0xac], 9
call fcn.005a0190
add esp, 8
test al, al
jne 0x5a6584
push 0x4289d4
push esi
call fcn.005a0190
add esp, 8
test al, al
jne 0x5a6584
push 0x4289c8
push esi
call fcn.005a0190
add esp, 8
test al, al
jne 0x5a6584
push 0x1a
push 0x4289ac
lea ecx, [esp + 0x3c]
call fcn.004b1190
jmp 0x5a7064
mov eax, dword [edi + 0x60]
lea esi, [edi + 0x60]
cmp dword [eax - 0xc], ebp
jle 0x5a6628
push 0x3f
push eax
call fcn.008092a7
add esp, 8
test eax, eax
je 0x5a6628
sub eax, dword [esi]
mov edi, eax
js 0x5a6628
lea ecx, [edi + 1]
push ecx
lea edx, [esp + 0x28]
push edx
mov ecx, esi
call fcn.00535510
mov ecx, dword [esp + 0x18]
add ecx, 0x64
push eax
mov byte [esp + 0xa8], 0xa
call fcn.004b1400
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a65f9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, edi
or eax, ecx
jge 0x5a6614
push edi
mov ecx, esi
call fcn.004b05e0
mov eax, dword [esi]
cmp edi, dword [eax - 8]
jg 0x5a6796
mov dword [eax - 0xc], edi
mov ecx, dword [esi]
mov byte [edi + ecx], 0
mov edi, dword [esp + 0x18]
mov edx, dword [edi + 0x64]
lea esi, [edi + 0x64]
xor ebx, ebx
cmp dword [edx - 0xc], ebx
jle 0x5a6962
mov eax, edx
cmp dword [eax - 0xc], ebx
jle 0x5a665f
push 0x23
push eax
call fcn.008092a7
add esp, 8
cmp eax, ebx
je 0x5a665f
sub eax, dword [esi]
js 0x5a665f
push eax
mov ecx, esi
call fcn.004b1c90
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], 0xa
push ebx
push 0x26
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x30]
push esi
push ecx
mov byte [esp + 0xb8], 0xb
call fcn.00539660
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
add esp, 0x14
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5a66bf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x20], eax
cmp eax, ebx
je 0x5a6951
nop
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], 0xa
mov ecx, dword [esp + 0x20]
xor eax, eax
cmp ecx, ebx
setne al
mov byte [esp + 0xa4], 0xc
cmp eax, ebx
je 0x5a60f9
push 2
mov eax, ecx
mov ecx, dword [ecx]
push 0x3d
lea edx, [esp + 0x44]
add eax, 8
push edx
push eax
lea eax, [esp + 0x34]
push eax
mov dword [esp + 0x34], ecx
call fcn.00539660
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a6749
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor ecx, ecx
cmp dword [esp + 0x44], 2
jne 0x5a68c8
mov eax, dword [esp + 0x40]
cmp eax, ebx
setne cl
cmp ecx, ebx
je 0x5a60f9
mov esi, dword [eax + 8]
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
mov dword [esp + 0x34], esp
mov ebp, esp
call eax
cmp dword [esi - 4], ebx
lea ecx, [esi - 4]
jl 0x5a67a0
cmp eax, dword [esi - 0x10]
jne 0x5a67a0
lea edi, [esi - 0x10]
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x5a67d1
push 0x80070057
call fcn.004a8210
mov ecx, dword [esi - 0xc]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
cmp edi, ebx
je 0x5a697c
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov eax, dword [esi - 0xc]
inc eax
push eax
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.0080217f
add esp, 0x10
lea edx, [esp + 0x5c]
add edi, 0x10
push edx
mov dword [ebp], edi
call fcn.005cb9b0
mov eax, dword [eax]
push eax
lea eax, [esp + 0x60]
push eax
mov byte [esp + 0xb4], 0xd
call fcn.005c55a0
add esp, 0x10
mov ebp, eax
mov ecx, dword [esp + 0x3c]
xor eax, eax
cmp ecx, ebx
setne al
mov byte [esp + 0xa4], 0xe
cmp eax, ebx
je 0x5a60f9
mov edi, dword [ecx + 8]
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x34]
push eax
add esi, 0xa0
push edi
mov ecx, esi
call fcn.005ec920
cmp eax, ebx
jne 0x5a6869
cmp dword [esi], ebx
jne 0x5a6857
mov ecx, dword [esi + 8]
push 1
push ecx
mov ecx, esi
call fcn.00635dd0
test al, al
je 0x5a6420
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x2c]
push edx
push eax
push edi
mov ecx, esi
call fcn.005a5b90
lea ecx, [eax + 4]
push ebp
call fcn.004aa540
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0xd
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a689a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x58]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a693a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x5a693a
mov eax, dword [esp + 0x3c]
cmp eax, ebx
setne cl
cmp ecx, ebx
je 0x5a60f9
mov edi, dword [eax + 8]
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x1c]
push eax
add esi, 0xa0
push edi
mov ecx, esi
call fcn.005ec920
cmp eax, ebx
jne 0x5a692c
cmp dword [esi], ebx
jne 0x5a691a
mov ecx, dword [esi + 8]
push 1
push ecx
mov ecx, esi
call fcn.00635dd0
test al, al
je 0x5a6420
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
push edx
push eax
push edi
mov ecx, esi
call fcn.005a5b90
push ebx
lea ecx, [eax + 4]
push 0x402a88
call fcn.004a8db0
lea ecx, [esp + 0x3c]
call fcn.004afe70
cmp dword [esp + 0x20], ebx
jne 0x5a66d0
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x70]
mov byte [esp + 0xa4], 9
call fcn.004afe70
call fcn.007cff5d
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x5a6981
push 0x80004005
call fcn.004a8210
call fcn.004a8580
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0xa4], 0xf
call fcn.007cff5d
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x5a69b3
push 0x80004005
call fcn.004a8210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
xor eax, eax
mov byte [esp + 0xa4], 0x10
cmp dword [edi + 0xa4], ebx
je 0x5a69f5
mov edx, dword [edi + 0xa8]
cmp edx, ebx
jbe 0x5a69f3
mov esi, dword [edi + 0xa0]
mov ecx, esi
cmp dword [ecx], ebx
jne 0x5a6a1d
inc eax
add ecx, 4
cmp eax, edx
jb 0x5a69e7
xor eax, eax
mov ebx, eax
test eax, eax
je 0x5a6bd7
nop
xor eax, eax
test ebx, ebx
setne al
test eax, eax
je 0x5a60f9
mov ebp, ebx
mov dword [esp + 0x24], ebp
test ebx, ebx
jne 0x5a6a22
xor ecx, ecx
jmp 0x5a6a5a
mov eax, dword [esi + eax*4]
jmp 0x5a69f5
mov ecx, dword [ebx + 8]
test ecx, ecx
jne 0x5a6a5a
mov edi, dword [esp + 0x18]
mov eax, dword [ebx + 0xc]
mov esi, dword [edi + 0xa8]
xor edx, edx
div esi
inc edx
jmp 0x5a6a40
cmp edx, esi
jae 0x5a6a5a
mov eax, dword [edi + 0xa0]
cmp dword [eax + edx*4], 0
lea eax, [eax + edx*4]
je 0x5a6a55
mov ecx, dword [eax]
inc edx
test ecx, ecx
je 0x5a6a40
mov esi, dword [esp + 0x14]
mov ebx, ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [ebp]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x20], ebx
cmp eax, esi
je 0x5a6ac0
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5a6ab2
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a6ab2
push eax
call fcn.004afcb0
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5a6aa5
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x24]
jmp 0x5a6ac0
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.004b1190
mov ecx, dword [ebp + 4]
mov esi, dword [esp + 0x1c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x5a6b18
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5a6b0a
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a6b0a
push eax
call fcn.004a9b50
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5a6b01
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x1c], ebp
jmp 0x5a6b18
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x24]
call fcn.004a8db0
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x34]
push eax
add esi, 0x130
push edi
mov ecx, esi
call fcn.005ec920
test eax, eax
jne 0x5a6b6c
cmp dword [esi], eax
jne 0x5a6b5a
mov ecx, dword [esi + 8]
push 1
push ecx
mov ecx, esi
call fcn.00635dd0
test al, al
je 0x5a6420
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x2c]
push edx
push eax
push edi
mov ecx, esi
call fcn.005a5b90
mov esi, dword [eax + 4]
lea edi, [eax + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
sub esi, 0x10
cmp eax, esi
je 0x5a6bcc
cmp dword [esi + 0xc], 0
lea ebp, [esi + 0xc]
jl 0x5a6bbc
mov ecx, dword [eax]
cmp ecx, dword [esi]
jne 0x5a6bbc
push eax
call fcn.004a9b50
add esp, 4
mov ebx, eax
or edx, 0xffffffff
lock xadd dword [ebp], edx
dec edx
test edx, edx
jg 0x5a6bb1
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
add ebx, 0x10
mov dword [edi], ebx
mov ebx, dword [esp + 0x20]
jmp 0x5a6bcc
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.004a8db0
cmp dword [esp + 0x28], 0
jne 0x5a6a00
mov ecx, dword [esp + 0x18]
xor eax, eax
cmp dword [ecx + 0xd4], eax
je 0x5a6c06
mov edx, dword [ecx + 0xd8]
test edx, edx
je 0x5a6c04
mov esi, dword [ecx + 0xd0]
mov ecx, esi
cmp dword [ecx], 0
jne 0x5a6c2d
inc eax
add ecx, 4
cmp eax, edx
jb 0x5a6bf7
xor eax, eax
mov ebx, eax
test eax, eax
je 0x5a6de7
xor eax, eax
test ebx, ebx
setne al
test eax, eax
je 0x5a60f9
mov ebp, ebx
mov dword [esp + 0x24], ebp
test ebx, ebx
jne 0x5a6c32
xor ecx, ecx
jmp 0x5a6c6a
mov eax, dword [esi + eax*4]
jmp 0x5a6c06
mov ecx, dword [ebx + 8]
test ecx, ecx
jne 0x5a6c6a
mov edi, dword [esp + 0x18]
mov eax, dword [ebx + 0xc]
mov esi, dword [edi + 0xd8]
xor edx, edx
div esi
inc edx
jmp 0x5a6c50
cmp edx, esi
jae 0x5a6c6a
mov eax, dword [edi + 0xd0]
cmp dword [eax + edx*4], 0
lea eax, [eax + edx*4]
je 0x5a6c65
mov ecx, dword [eax]
inc edx
test ecx, ecx
je 0x5a6c50
mov esi, dword [esp + 0x14]
mov ebx, ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [ebp]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x20], ebx
cmp eax, esi
je 0x5a6cd0
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5a6cc2
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a6cc2
push eax
call fcn.004afcb0
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5a6cb5
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x24]
jmp 0x5a6cd0
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.004b1190
mov ecx, dword [ebp + 4]
mov esi, dword [esp + 0x1c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x5a6d28
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5a6d1a
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a6d1a
push eax
call fcn.004a9b50
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5a6d11
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x1c], ebp
jmp 0x5a6d28
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x24]
call fcn.004a8db0
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x34]
push eax
add esi, 0x130
push edi
mov ecx, esi
call fcn.005ec920
test eax, eax
jne 0x5a6d7c
cmp dword [esi], eax
jne 0x5a6d6a
mov ecx, dword [esi + 8]
push 1
push ecx
mov ecx, esi
call fcn.00635dd0
test al, al
je 0x5a6420
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x2c]
push edx
push eax
push edi
mov ecx, esi
call fcn.005a5b90
mov esi, dword [eax + 4]
lea edi, [eax + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
sub esi, 0x10
cmp eax, esi
je 0x5a6ddc
cmp dword [esi + 0xc], 0
lea ebp, [esi + 0xc]
jl 0x5a6dcc
mov ecx, dword [eax]
cmp ecx, dword [esi]
jne 0x5a6dcc
push eax
call fcn.004a9b50
add esp, 4
mov ebx, eax
or edx, 0xffffffff
lock xadd dword [ebp], edx
dec edx
test edx, edx
jg 0x5a6dc1
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
add ebx, 0x10
mov dword [edi], ebx
mov ebx, dword [esp + 0x20]
jmp 0x5a6ddc
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.004a8db0
cmp dword [esp + 0x28], 0
jne 0x5a6c10
mov ecx, dword [esp + 0x18]
xor eax, eax
cmp dword [ecx + 0x104], eax
je 0x5a6e16
mov edx, dword [ecx + 0x108]
test edx, edx
je 0x5a6e14
mov esi, dword [ecx + 0x100]
mov ecx, esi
cmp dword [ecx], 0
jne 0x5a6e3d
inc eax
add ecx, 4
cmp eax, edx
jb 0x5a6e07
xor eax, eax
mov ebx, eax
test eax, eax
je 0x5a6ff7
xor eax, eax
test ebx, ebx
setne al
test eax, eax
je 0x5a60f9
mov ebp, ebx
mov dword [esp + 0x24], ebp
test ebx, ebx
jne 0x5a6e42
xor ecx, ecx
jmp 0x5a6e7a
mov eax, dword [esi + eax*4]
jmp 0x5a6e16
mov ecx, dword [ebx + 8]
test ecx, ecx
jne 0x5a6e7a
mov edi, dword [esp + 0x18]
mov eax, dword [ebx + 0xc]
mov esi, dword [edi + 0x108]
xor edx, edx
div esi
inc edx
jmp 0x5a6e60
cmp edx, esi
jae 0x5a6e7a
mov eax, dword [edi + 0x100]
cmp dword [eax + edx*4], 0
lea eax, [eax + edx*4]
je 0x5a6e75
mov ecx, dword [eax]
inc edx
test ecx, ecx
je 0x5a6e60
mov esi, dword [esp + 0x14]
mov ebx, ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [ebp]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x20], ebx
cmp eax, esi
je 0x5a6ee0
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5a6ed2
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a6ed2
push eax
call fcn.004afcb0
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5a6ec5
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x24]
jmp 0x5a6ee0
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.004b1190
mov ecx, dword [ebp + 4]
mov esi, dword [esp + 0x1c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x5a6f38
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5a6f2a
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a6f2a
push eax
call fcn.004a9b50
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5a6f21
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x1c], ebp
jmp 0x5a6f38
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x24]
call fcn.004a8db0
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x34]
push eax
add esi, 0x130
push edi
mov ecx, esi
call fcn.005ec920
test eax, eax
jne 0x5a6f8c
cmp dword [esi], eax
jne 0x5a6f7a
mov ecx, dword [esi + 8]
push 1
push ecx
mov ecx, esi
call fcn.00635dd0
test al, al
je 0x5a6420
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x2c]
push edx
push eax
push edi
mov ecx, esi
call fcn.005a5b90
mov esi, dword [eax + 4]
lea edi, [eax + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
sub esi, 0x10
cmp eax, esi
je 0x5a6fec
cmp dword [esi + 0xc], 0
lea ebp, [esi + 0xc]
jl 0x5a6fdc
mov ecx, dword [eax]
cmp ecx, dword [esi]
jne 0x5a6fdc
push eax
call fcn.004a9b50
add esp, 4
mov ebx, eax
or edx, 0xffffffff
lock xadd dword [ebp], edx
dec edx
test edx, edx
jg 0x5a6fd1
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
add ebx, 0x10
mov dword [edi], ebx
mov ebx, dword [esp + 0x20]
jmp 0x5a6fec
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.004a8db0
cmp dword [esp + 0x28], 0
jne 0x5a6e20
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0xf
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a701f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7047
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x68]
push ecx
mov ecx, dword [eax + 8]
lea edx, [esp + 0x38]
push edx
push eax
call fcn.005aafd0
mov edi, dword [esp + 0x18]
xor ebp, ebp
mov eax, dword [esp + 0x34]
cmp dword [eax - 0xc], ebp
je 0x5a7b5a
xor eax, eax
cmp dword [edi + 0x104], ebp
je 0x5a70a2
mov edx, dword [edi + 0x108]
cmp edx, ebp
jbe 0x5a70a0
mov esi, dword [edi + 0x100]
mov ecx, esi
lea ecx, [ecx]
cmp dword [ecx], ebp
jne 0x5a7129
inc eax
add ecx, 4
cmp eax, edx
jb 0x5a7090
xor eax, eax
mov dword [esp + 0x28], eax
cmp eax, ebp
je 0x5a7a6e
mov edi, edi
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5a60f9
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0xa4], 0x11
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5a60f9
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [esp + 0x1c], ebx
mov edx, dword [esp + 0x28]
xor eax, eax
test edx, edx
setne al
mov byte [esp + 0xa4], 0x12
test eax, eax
je 0x5a60f9
mov ebp, edx
mov dword [esp + 0x2c], ebp
test edx, edx
jne 0x5a7131
xor ecx, ecx
jmp 0x5a716a
mov eax, dword [esi + eax*4]
jmp 0x5a70a2
mov ecx, dword [edx + 8]
test ecx, ecx
jne 0x5a716a
mov eax, dword [edx + 0xc]
mov edi, dword [esp + 0x18]
mov esi, dword [edi + 0x108]
xor edx, edx
div esi
inc edx
lea ebx, [ebx]
cmp edx, esi
jae 0x5a716a
mov eax, dword [edi + 0x100]
cmp dword [eax + edx*4], 0
lea eax, [eax + edx*4]
je 0x5a7165
mov ecx, dword [eax]
inc edx
test ecx, ecx
je 0x5a7150
mov esi, dword [esp + 0x14]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [ebp]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x5a71ce
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5a71c0
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a71c0
push eax
call fcn.004afcb0
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5a71b3
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebp, 0x10
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x2c]
jmp 0x5a71ce
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.004b1190
mov ecx, dword [ebp + 4]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x5a7226
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x5a7214
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x5a7214
push eax
call fcn.004a9b50
mov ebp, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x5a720b
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea ebx, [ebp + 0x10]
mov dword [esp + 0x1c], ebx
jmp 0x5a7226
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x24]
call fcn.004a8db0
mov ebx, dword [esp + 0x1c]
push ecx
mov ecx, dword [ebx - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add ebx, 0xfffffff0
mov dword [esp + 0x34], esp
mov edi, esp
mov dword [esp + 0x34], ebx
call eax
cmp dword [ebx + 0xc], 0
lea ecx, [ebx + 0xc]
jl 0x5a7258
cmp eax, dword [ebx]
jne 0x5a7258
mov esi, ebx
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x5a7293
mov ecx, dword [ebx + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov esi, eax
test esi, esi
je 0x5a7bef
mov eax, dword [ebx + 4]
mov dword [esi + 4], eax
mov eax, dword [ebx + 4]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [ebx + 0x10]
push edx
lea eax, [eax + eax + 2]
push eax
lea ecx, [esi + 0x10]
push ecx
call fcn.0080217f
add esp, 0x10
lea edx, [esp + 0x8c]
add esi, 0x10
push edx
mov dword [edi], esi
call fcn.0065c8a0
mov esi, eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0xa4]
push 0x42899c
push ecx
mov byte [esp + 0xb8], 0x13
call fcn.00537500
push 0x428998
push eax
lea edx, [esp + 0xac]
push edx
mov byte [esp + 0xc4], 0x14
call fcn.0059f0f0
push esi
push eax
lea eax, [esp + 0xbc]
push eax
mov byte [esp + 0xd0], 0x15
call fcn.004f8490
add esp, 0x2c
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x3c]
mov byte [esp + 0xac], 0x16
call fcn.004e74c0
mov eax, dword [esp + 0x94]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x15
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a733e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x90]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7369
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x98]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x13
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7394
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x88]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x12
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a73bf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x18]
xor eax, eax
cmp dword [edi + 0x2c], eax
je 0x5a73e5
mov edx, dword [edi + 0x30]
test edx, edx
je 0x5a73e3
mov esi, dword [edi + 0x28]
mov ecx, esi
cmp dword [ecx], 0
jne 0x5a73f1
inc eax
add ecx, 4
cmp eax, edx
jb 0x5a73d6
xor eax, eax
mov esi, eax
test eax, eax
je 0x5a7a04
jmp 0x5a740b
mov eax, dword [esi + eax*4]
jmp 0x5a73e5
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x8c]
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5a60f9
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x3c], eax
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5a60f9
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x40], eax
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5a60f9
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
xor eax, eax
test esi, esi
setne al
mov byte [esp + 0xa4], 0x17
test eax, eax
je 0x5a60f9
mov ebx, esi
mov dword [esp + 0x20], ebx
test esi, esi
jne 0x5a749c
xor ecx, ecx
jmp 0x5a74c7
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x5a74c7
mov eax, dword [esi + 0x14]
mov esi, dword [edi + 0x30]
xor edx, edx
div esi
inc edx
mov edi, edi
cmp edx, esi
jae 0x5a74c7
mov eax, dword [edi + 0x28]
cmp dword [eax + edx*4], 0
lea eax, [eax + edx*4]
je 0x5a74c2
mov ecx, dword [eax]
inc edx
test ecx, ecx
je 0x5a74b0
mov eax, dword [ebx]
mov ebp, dword [esp + 0x14]
lea esi, [eax - 0x10]
add ebp, 0xfffffff0
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x8c], ecx
cmp esi, ebp
je 0x5a7581
cmp dword [ebp + 0xc], 0
lea ebx, [ebp + 0xc]
jl 0x5a7573
mov ecx, dword [esi]
cmp ecx, dword [ebp]
jne 0x5a7573
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x5a751f
cmp eax, dword [esi]
jne 0x5a751f
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x5a7553
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x5a697c
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.0080217f
add esp, 0x10
or edx, 0xffffffff
lock xadd dword [ebx], edx
dec edx
test edx, edx
jg 0x5a756a
mov ecx, dword [ebp]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebp
call edx
add edi, 0x10
mov dword [esp + 0x14], edi
jmp 0x5a7581
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.004b1190
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 4]
mov ebp, dword [esp + 0x3c]
lea esi, [eax - 0x10]
add ebp, 0xfffffff0
cmp esi, ebp
je 0x5a763c
cmp dword [ebp + 0xc], 0
lea ebx, [ebp + 0xc]
jl 0x5a762e
mov ecx, dword [esi]
cmp ecx, dword [ebp]
jne 0x5a762e
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x5a75d3
cmp eax, dword [esi]
jne 0x5a75d3
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x5a760e
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x5a7bef
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.0080217f
add esp, 0x10
or ecx, 0xffffffff
lock xadd dword [ebx], ecx
dec ecx
test ecx, ecx
jg 0x5a7625
mov ecx, dword [ebp]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebp
call eax
add edi, 0x10
mov dword [esp + 0x3c], edi
jmp 0x5a763c
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x44]
call fcn.004a8db0
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 8]
mov ebp, dword [esp + 0x40]
lea esi, [eax - 0x10]
add ebp, 0xfffffff0
cmp esi, ebp
je 0x5a76f7
cmp dword [ebp + 0xc], 0
lea ebx, [ebp + 0xc]
jl 0x5a76e9
mov ecx, dword [esi]
cmp ecx, dword [ebp]
jne 0x5a76e9
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x5a768e
cmp eax, dword [esi]
jne 0x5a768e
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x5a76c9
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x5a7bef
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.0080217f
add esp, 0x10
or ecx, 0xffffffff
lock xadd dword [ebx], ecx
dec ecx
test ecx, ecx
jg 0x5a76e0
mov ecx, dword [ebp]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebp
call eax
add edi, 0x10
mov dword [esp + 0x40], edi
jmp 0x5a76f7
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x48]
call fcn.004a8db0
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0xc]
mov ebp, dword [esp + 0x44]
lea esi, [eax - 0x10]
add ebp, 0xfffffff0
cmp esi, ebp
je 0x5a77b2
cmp dword [ebp + 0xc], 0
lea ebx, [ebp + 0xc]
jl 0x5a77a4
mov ecx, dword [esi]
cmp ecx, dword [ebp]
jne 0x5a77a4
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x5a7749
cmp eax, dword [esi]
jne 0x5a7749
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x5a7784
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x5a7bef
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.0080217f
add esp, 0x10
or ecx, 0xffffffff
lock xadd dword [ebx], ecx
dec ecx
test ecx, ecx
jg 0x5a779b
mov ecx, dword [ebp]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebp
call eax
add edi, 0x10
mov dword [esp + 0x44], edi
jmp 0x5a77b2
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x4c]
call fcn.004a8db0
mov ecx, dword [esp + 0x3c]
cmp dword [ecx - 0xc], 0
je 0x5a78a6
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5a60f9
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov ecx, 0x428990
mov byte [esp + 0xa4], 0x18
test ecx, 0xffff0000
jne 0x5a7815
mov edx, ecx
movzx esi, dx
push esi
call fcn.007cfe78
test eax, eax
je 0x5a7823
push esi
push eax
lea ecx, [esp + 0x28]
call fcn.004a8d10
jmp 0x5a7823
push 0x428990
lea ecx, [esp + 0x24]
call fcn.004b10a0
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x74]
push edx
mov byte [esp + 0xb0], 0x19
call fcn.004ac680
add esp, 0xc
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0xa8], 0x1a
call fcn.005a00e0
mov eax, dword [esp + 0x6c]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x19
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a787e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x17
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a78a6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x40]
cmp dword [ecx - 0xc], 0
je 0x5a7945
push 0x428984
lea ecx, [esp + 0x5c]
call fcn.004b2080
lea edx, [esp + 0x40]
push edx
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x64]
push ecx
mov byte [esp + 0xb0], 0x1b
call fcn.004ac680
add esp, 0xc
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0xa8], 0x1c
call fcn.005a00e0
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x1b
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5a791d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x58]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x17
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7945
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x44]
cmp dword [ecx - 0xc], 0
je 0x5a79e4
push 0x428978
lea ecx, [esp + 0x58]
call fcn.004b2080
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x68]
push ecx
mov byte [esp + 0xb0], 0x1d
call fcn.004ac680
add esp, 0xc
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x38]
mov byte [esp + 0xa8], 0x1e
call fcn.005a00e0
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x1d
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5a79bc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0x17
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a79e4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa4], 0x12
call fcn.004b0a20
cmp dword [esp + 0x2c], 0
jne 0x5a7400
mov ebx, dword [esp + 0x30]
push 2
push 0x42832c
lea ecx, [esp + 0x3c]
call fcn.004e74c0
mov byte [esp + 0xa4], 0x11
lea ecx, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7a35
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7a5d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x38], 0
jne 0x5a70b0
mov edi, dword [esp + 0x18]
xor ebp, ebp
push 0x2f
push 0x428948
lea ecx, [esp + 0x3c]
call fcn.004e74c0
mov eax, dword [esp + 0x34]
mov ecx, dword [eax - 0xc]
mov edx, dword [edi]
push ebp
push ecx
push eax
mov eax, dword [edx + 0x18]
mov ecx, edi
call eax
lea eax, [edi + 0x5c]
push 0x4289d4
push eax
call fcn.005a0210
add esp, 8
test al, al
je 0x5a7ade
mov eax, dword [esp + 0x34]
cmp dword [eax - 0xc], ebp
jl 0x5a7ade
push 0x428938
push eax
call fcn.00807018
add esp, 8
cmp eax, ebp
je 0x5a7ade
sub eax, dword [esp + 0x34]
jne 0x5a7ade
mov ecx, dword [esp + 0x68]
mov eax, dword [ecx - 0xc]
cmp eax, ebp
je 0x5a7ade
mov edx, dword [edi]
push ebp
push eax
mov eax, dword [edx + 0x18]
push ecx
mov ecx, edi
call eax
push 0x428930
lea ecx, [esp + 0x28]
call fcn.0050c640
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x64]
push edx
lea eax, [esp + 0x64]
push eax
push 0x428924
lea ecx, [edi + 0x70]
mov byte [esp + 0xb4], 0x1f
call fcn.005ec920
cmp eax, ebp
je 0x5a7b21
add eax, 4
push eax
lea ecx, [esp + 0x28]
call fcn.004b1400
mov ecx, edi
call fcn.0059fbd0
mov edx, dword [edi]
mov eax, dword [edx + 0x30]
push ebp
mov ecx, edi
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7b5a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x68]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7b82
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
mov byte [esp + 0xa4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7baa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x64]
add eax, 0xfffffff0
mov dword [esp + 0xa4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5a7bd5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x9c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x94
ret
call fcn.004a8580
int3