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

Disassembly:
sub esp, 0x180
push ebx
mov ebx, dword [esp + 0x188]
xor eax, eax
push ebp
push esi
push 0x14c
mov ebp, dword [ebx + 0xc]
xorps xmm0, xmm0
push eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x34]
push eax
mov dword [esp + 0x2c], 0
mov dword [esp + 0x24], 0
movlpd qword [esp + 0x184], xmm0
movlpd qword [esp + 0x18c], xmm0
call fcn.00599af0
movzx edx, word [ebx + 0x6e]
lea ecx, [ebx + 0x70]
movzx eax, word [ebx + 0x6c]
add esp, 0xc
imul eax, edx
mov dword [esp + 0xdc], ecx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x90], ebp
lea edx, [ecx + eax*2]
mov ecx, dword [esp + 0x194]
mov eax, ecx
mov dword [esp + 0x188], edx
shr eax, 8
and ecx, 0xfffffeff
and eax, 1
mov dword [esp + 0x194], ecx
cmp word [ebx + 0x66], 0
mov dword [esp + 0x154], eax
lea eax, [ebp + 0x100]
mov dword [esp + 0x34], edx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x94], ecx
je 0x5880ce
test dword [ebx + 0x48], 0x2000
jne 0x5880ce
xor eax, eax
jmp 0x5880d3
mov eax, 1
cmp word [ebx + 0x64], 0
mov dword [esp + 0x9c], eax
ja 0x5880ee
test dword [ebx + 0x48], 0x2000
jne 0x5880ee
xor eax, eax
jmp 0x5880f3
mov eax, 1
mov dword [esp + 0x98], eax
xor esi, esi
movzx eax, word [ebx + 0x62]
dec eax
mov dword [esp + 0xb8], esi
cmp eax, 5
ja case.default.0x588111
jmp dword [eax*4 + 0x589c6c]
mov dword [esp + 0xc4], 0xd
jmp 0x588178
mov dword [esp + 0xc4], 0xa
jmp 0x588178
mov dword [esp + 0xc4], 0xd0a
jmp 0x588178
mov esi, 1
mov dword [esp + 0xc4], 0xd0a
mov dword [esp + 0xb8], esi
jmp 0x588178
mov esi, 2
mov dword [esp + 0xc4], 0xd0a
mov dword [esp + 0xb8], esi
jmp 0x588178
mov dword [esp + 0xc4], esi
movzx ecx, word [ebx + 0x60]
mov dword [esp + 0xbc], SysStringLen
mov dword [esp + 0xc0], 0
push edi
cmp ecx, 1
jne 0x5881a3
mov edi, ecx
mov dword [esp + 0xcc], edi
jmp 0x5881b9
xor eax, eax
cmp ecx, 2
sete al
inc eax
mov dword [esp + 0x10], eax
mov edi, eax
mov dword [esp + 0xcc], eax
mov ecx, dword [ebx + 0x40]
mov eax, ecx
shr eax, 4
and eax, 1
mov dword [esp + 0xd0], SysStringLen
mov dword [esp + 0xd8], eax
lea eax, [ebp + 0x340]
mov dword [esp + 0xdc], eax
movzx eax, word [ebx + 0x6e]
mov dword [esp + 0xe4], eax
movzx eax, word [ebx + 0x6c]
mov dword [esp + 0xe8], eax
mov eax, ecx
shr eax, 9
and eax, 1
mov dword [esp + 0xd4], 0
mov dword [esp + 0x14c], eax
mov eax, ecx
shr eax, 0x15
and eax, 1
mov dword [esp + 0x150], eax
mov eax, ecx
shr eax, 0x13
and eax, 1
mov dword [esp + 0x154], eax
mov eax, ecx
shr eax, 0x11
and eax, 1
mov dword [esp + 0x15c], eax
test ecx, 0x80000
je 0x5882b7
cmp esi, 1
jne 0x58825a
mov dword [esp + 0xc0], 0x2029
jmp 0x588288
cmp esi, 2
jne 0x58826c
mov dword [esp + 0xc0], 0xd
jmp 0x588288
mov eax, dword [esp + 0xc8]
movzx eax, al
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
test esi, esi
je 0x588293
mov dword [esp + 0xc4], 0xa
cmp edi, 1
mov dword [esp + 0xd4], 0xa
mov eax, 0xd
mov ecx, 0x2029
cmove eax, ecx
mov dword [esp + 0xd0], eax
jmp 0x5882c2
mov dword [esp + 0x158], 0
movzx eax, word [edx + 2]
cmp word [edx + eax*2], 0x78
lea edx, [edx + eax*2]
je 0x5882c2
movzx eax, word [ebx + 0x68]
lea ebp, [edx + 4]
push dword [ebx + 8]
mov esi, dword [ebx]
inc eax
push eax
mov ecx, esi
mov dword [esp + 0x5c], 0x14
call dword [0x5cd3f0]
call esi
mov ecx, eax
add esp, 8
mov dword [esp + 0x44], ecx
test ecx, ecx
je 0x5884f3
movzx eax, word [ebx + 0x68]
inc eax
push eax
push 1
push ecx
call fcn.00599af0
push ebp
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.0056f820
add esp, 0x18
test eax, eax
jne 0x58834c
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
push dword [esp + 0x48]
call dword [0x5cd3f0]
call esi
add esp, 8
mov eax, 0xffffffd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
mov edx, dword [esp + 0x198]
cmp edx, 1
jne 0x588377
test byte [ebx + 0x48], 0x80
je 0x588371
test dword [ebx + 0x40], 0x10000
jne 0x588371
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x5c], ecx
jmp 0x58838f
mov ecx, dword [esp + 0x54]
jmp 0x588396
mov eax, dword [esp + 0x54]
mov dword [esp + 0x64], eax
lea ecx, [eax + 4]
mov dword [esp + 0x54], ecx
cmp edx, 2
jne 0x588396
mov dword [esp + 0x68], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
test dword [ebx + 0x40], 0x800100
je 0x5883aa
mov dword [esp + 0x6c], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
cmp dword [esp + 0x74], 0
je 0x5883bc
mov dword [esp + 0x74], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
cmp dword [esp + 0xa4], 0
je 0x5883d1
mov eax, ecx
add ecx, 4
mov dword [esp + 0x54], ecx
jmp 0x5883d5
mov eax, dword [esp + 0x58]
mov edx, ecx
test cl, 4
je 0x5883e5
lea ecx, [edx + 4]
mov dword [esp + 0x54], ecx
mov edx, ecx
test eax, eax
cmove eax, edx
cmp dword [esp + 0x78], 0
mov dword [esp + 0x58], eax
je 0x58840d
movzx eax, word [ebx + 0x68]
inc eax
push eax
push 0
push dword [esp + 0x4c]
call fcn.00599af0
mov ecx, dword [esp + 0x60]
add esp, 0xc
movzx eax, word [ebx + 0x68]
mov edi, ebp
sub edi, dword [esp + 0x38]
inc eax
push dword [ebx + 8]
mov esi, dword [ebx]
sar edi, 1
lea eax, [ecx + eax*8]
mov ecx, esi
mov dword [esp + 0x54], eax
xor eax, eax
cmp dword [esp + 0xb0], eax
setne al
add eax, 4
imul eax, edi
push eax
call dword [0x5cd3f0]
call esi
add esp, 8
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x58846b
push ebx
push dword [esp + 0x48]
call fcn.0058b560
add esp, 8
mov eax, 0xffffffd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
lea esi, [edi*4]
push esi
push 0
push eax
call fcn.00599af0
movzx ecx, word [ebx + 0x68]
add esp, 0xc
mov eax, dword [esp + 0x50]
lea eax, [eax + ecx*4]
add eax, 4
test dword [ebx + 0x40], 0x80010000
mov dword [esp + 0x14], eax
jne 0x5884bf
cmp dword [esp + 0xb0], 0
jne 0x5884bf
push 1
push 0
push 0
lea eax, [esp + 0x20]
push eax
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.0057f460
add esp, 0x18
push ebp
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.0058d2d0
add esp, 0xc
cmp dword [esp + 0x14], 0x10000
jle 0x588503
push ebx
push dword [esp + 0x40]
call fcn.0058b560
push ebx
push dword [esp + 0x50]
call fcn.0058b560
add esp, 0x10
pop edi
pop esi
pop ebp
mov eax, 0xffffffd0
pop ebx
add esp, 0x180
ret
cmp dword [esp + 0xac], 0
je 0x588533
mov eax, dword [esp + 0x3c]
push edi
add eax, esi
push 0
push eax
mov dword [esp + 0x54], eax
call fcn.00599af0
push 0
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.0058d630
add esp, 0x18
push dword [ebx + 8]
mov esi, dword [ebx]
mov ecx, esi
push 0x5c
call dword [0x5cd3f0]
call esi
mov edi, eax
add esp, 8
test edi, edi
je 0x589c47
push 0x5c
push 0
push edi
call fcn.00599af0
add esp, 0xc
mov dword [edi + 0x28], ebx
mov esi, dword [ebx]
mov ecx, esi
push dword [ebx + 8]
push 0x1000
call dword [0x5cd3f0]
call esi
add esp, 8
mov dword [edi + 0x30], eax
mov esi, dword [ebx]
mov ecx, esi
push dword [ebx + 8]
push 0x800
call dword [0x5cd3f0]
call esi
mov ecx, eax
add esp, 8
mov eax, dword [edi + 0x30]
mov dword [edi + 0x34], ecx
test eax, eax
je 0x589c18
test ecx, ecx
je 0x589c04
cmp dword [0x730934], 0
mov dword [eax], 0
mov eax, dword [edi + 0x30]
mov dword [eax + 4], 0
mov eax, dword [edi + 0x34]
mov dword [eax], 0
mov eax, dword [edi + 0x34]
mov dword [eax + 4], 0
mov dword [edi + 0x38], 0xffffffff
mov dword [edi + 0x3c], 0xffffffff
mov dword [edi + 0x40], 0xffffffff
mov dword [edi + 0x44], 0xffffffff
mov dword [edi + 0x48], 0xffffffff
mov dword [edi + 0x58], 0xffffffff
jne 0x588640
mov eax, 0x7308ef
mov dword [0x730934], 1
and eax, 0xfffffff0
mov dword [0x73092c], eax
mov dword [eax], 0x80000000
mov dword [eax + 0x10], 0x7fffffff
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], SysStringLen
mov dword [eax + 0x30], 0xffffffff
mov dword [eax + 0x34], 0x7fffffff
push dword [esp + 0x14]
mov dword [esp + 0x34], edi
push 0
push 0
push 5
push 5
push 0x11
push 0
push edi
call fcn.0058da60
movzx eax, word [ebx + 0x68]
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.0058c510
mov eax, dword [esp + 0x84]
add esp, 0x28
test eax, eax
je 0x5886a2
cmp dword [edi], 0
jne 0x5886c4
add eax, 0x20
push eax
push 0x8d
push 0
push 1
push 1
push edi
call fcn.00583520
add esp, 0x18
test eax, eax
je 0x5886a2
mov byte [eax], 0x89
cmp dword [edi], 0
jne 0x5886c4
push 0x18
push 0x8d
push 0
push 0xc
push 1
push edi
call fcn.00583520
add esp, 0x18
test eax, eax
je 0x5886c4
mov byte [eax], 0x89
push 0
push 0xc
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
push 4
push 0x81
push 0
push 2
push 0x20
push edi
call fcn.0058eef0
push 0xc
push 0x81
push 0
push 0xc
push 0x20
push edi
call fcn.0058eef0
add esp, 0x48
push 0
push 0x81
push 0
push 3
push 0x20
push edi
call fcn.0058eef0
push 0x28
push 0x81
push 0
push 1
push 0x25
push edi
call fcn.0058eef0
push 4
push 0x83
push 0
push 0xb
push 0x20
push edi
call fcn.0058eef0
add esp, 0x48
push 8
push 0x83
push 0
push 0xa
push 0x20
push edi
call fcn.0058eef0
push 1
push 0x40
push 0
push 1
push 0
push 1
push 0x60
push edi
call fcn.0058f130
push 0
push 1
push 0x10
push 0x8d
push 0x20
push edi
call fcn.0058eef0
mov eax, dword [esp + 0xd0]
add esp, 0x50
cmp eax, dword [esp + 0x84]
jge 0x588793
lea eax, [esp + 0x30]
push eax
call fcn.0058c380
add esp, 4
mov esi, dword [esp + 0x198]
cmp esi, 2
jne 0x5887b7
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
mov eax, dword [esp + 0x70]
test eax, eax
je 0x5887d4
push 0
push 0x40
push eax
push 0x8d
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
mov eax, dword [esp + 0x74]
test eax, eax
je 0x5887f1
push 0
push 0x40
push eax
push 0x8d
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
cmp dword [ebx + 0x40], 0
jl 0x5888f3
lea eax, [esp + 0x30]
push eax
call fcn.00589e00
push edi
mov dword [esp + 0x2c], eax
call fcn.0058ecc0
add esp, 8
mov dword [esp + 0x10], eax
test dword [ebx + 0x40], 0x10000
jne 0x588900
cmp esi, 1
jne 0x58883d
lea eax, [esp + 0x30]
push eax
call fcn.00585080
add esp, 4
test eax, eax
jne 0x588905
mov eax, dword [ebx + 0x48]
test al, 0x10
je 0x5888d0
mov eax, dword [esp + 0x34]
test byte [eax + 0x48], 0x20
movzx ecx, word [eax + 0x58]
mov esi, ecx
mov edx, ecx
je 0x5888b6
mov eax, 0xff
cmp cx, ax
ja 0x588874
mov eax, dword [esp + 0x90]
movzx edx, byte [esi + eax]
cmp ecx, 0x7f
jbe 0x5888b6
cmp dword [esp + 0x154], 0
jne 0x588888
cmp dword [esp + 0x15c], 0
je 0x5888b6
mov eax, esi
and esi, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x6a1498]
shl eax, 7
add eax, esi
movzx eax, word [eax*2 + 0x6a5898]
lea eax, [eax + eax*2]
mov ax, word [eax*4 + 0x69d28c]
add ax, cx
movzx edx, ax
push 0
push edx
push ecx
lea eax, [esp + 0x3c]
push eax
call fcn.00584c40
mov esi, dword [esp + 0x1a8]
add esp, 0x10
jmp 0x588900
test eax, 0x200
je 0x5888e3
lea eax, [esp + 0x30]
push eax
call fcn.00585a40
jmp 0x5888fd
test al, 0x40
je 0x588900
lea eax, [esp + 0x30]
push eax
call fcn.00586160
jmp 0x5888fd
push edi
call fcn.0058ecc0
mov dword [esp + 0x14], eax
add esp, 4
cmp esi, 1
jne 0x588955
cmp word [ebx + 0x66], 0
jbe 0x588955
test dword [ebx + 0x40], 0x10000
jne 0x588955
push 0xffffffffffffffff
push 0x40
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
movzx eax, word [ebx + 0x66]
add eax, eax
push eax
push 0x40
push 0
push 2
push 0
push 3
push 0x60
push edi
call fcn.0058f130
push 0
push 0xc
push 0
push 3
push 4
push edi
call fcn.0058d8e0
add esp, 0x50
mov dword [esp + 0x20], eax
cmp dword [esp + 0x5c], 0
je 0x588985
mov edx, dword [ebx + 0x48]
mov ecx, edx
movzx eax, word [ebx + 0x5c]
shr ecx, 4
and ecx, 1
shr edx, 8
push ecx
and edx, 1
push edx
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.0058cf40
add esp, 0x10
mov dword [esp + 0x28], eax
push 0
push 2
push dword [esp + 0x5c]
push 0x8d
push 0x20
push edi
call fcn.0058eef0
push 0x10
push 0x8d
push 0
push 9
push 0x20
push edi
call fcn.0058eef0
mov eax, dword [esp + 0xa8]
add esp, 0x30
test eax, eax
je 0x5889d0
push 0
push 0x40
push eax
push 0x8d
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x588a00
sub ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
add ecx, 2
sar ecx, 1
push 0
push 2
mov eax, dword [eax + ecx*4]
sar eax, 3
push eax
push 0x8d
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0x54]
je 0x588a1f
push 0
push 2
push eax
push 0x8d
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
cmp esi, 2
jne 0x588a75
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push edi
call fcn.0058d8e0
push 0
push 2
push dword [esp + 0x84]
mov esi, eax
push 0x8d
push 0x20
push edi
call fcn.0058eef0
push edi
call fcn.0058ecc0
add esp, 0x34
test esi, esi
je 0x588a92
test eax, eax
je 0x588a92
mov ecx, dword [esi + 8]
and ecx, 0xfffffffd
mov dword [esi + 0xc], eax
or ecx, 1
mov dword [esi + 8], ecx
jmp 0x588a92
cmp esi, 4
jne 0x588a92
push 0
push 2
push dword [esp + 0x6c]
push 0x8d
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
lea eax, [esp + 0x17c]
push eax
push ebp
push dword [esp + 0x40]
lea eax, [esp + 0x3c]
push eax
call fcn.00578940
add esp, 0x10
cmp dword [edi], 0
je 0x588b0a
push edi
call fcn.0058fc70
push ebx
push dword [esp + 0x4c]
call fcn.0058b560
push ebx
push dword [esp + 0x4c]
call fcn.0058b560
mov eax, dword [esp + 0x54]
add esp, 0x14
test eax, eax
je 0x5884f3
nop word [eax + eax]
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
mov edi, dword [eax]
push eax
call dword [0x5cd3f0]
call esi
add esp, 8
mov eax, edi
test edi, edi
jne 0x588ae0
lea eax, [edi - 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
test dword [ebx + 0x40], 0x20000000
je 0x588b2a
push 0
push 0xc
push 0
push 2
push 1
push edi
call fcn.0058d8e0
add esp, 0x18
mov ebp, eax
jmp 0x588b2c
xor ebp, ebp
cmp dword [esp + 0xa0], 0
je 0x588b5c
push dword [esp + 0x54]
push 0x8d
push 0
push 2
push 0
push edi
call fcn.0058d8e0
push edi
mov dword [esp + 0x48], eax
call fcn.0058ecc0
add esp, 0x1c
mov dword [esp + 0x1c], eax
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x124]
add esp, 4
mov esi, eax
mov dword [esp + 0xf8], esi
test edx, edx
je 0x588ba0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x588b99
test esi, esi
je 0x588b99
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x588b80
movzx eax, word [ebx + 0x68]
inc eax
push eax
lea eax, [esp + 0x34]
push eax
call fcn.0057dbd0
push edi
call fcn.0058ecc0
mov esi, dword [esp + 0x11c]
mov ecx, eax
add esp, 0xc
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf0], ecx
test esi, esi
je 0x588bfb
mov edx, dword [esi]
test edx, edx
je 0x588bed
test ecx, ecx
je 0x588bed
mov eax, dword [edx + 8]
and eax, 0xfffffffd
mov dword [edx + 0xc], ecx
or eax, 1
mov dword [edx + 8], eax
mov esi, dword [esi + 4]
test esi, esi
jne 0x588bd4
mov ecx, dword [esp + 0xf4]
mov esi, dword [esp + 0x118]
test esi, esi
je 0x588c2d
mov edx, dword [esi]
test edx, edx
je 0x588c1f
test ecx, ecx
je 0x588c1f
mov eax, dword [edx + 8]
and eax, 0xfffffffd
mov dword [edx + 0xc], ecx
or eax, 1
mov dword [edx + 8], eax
mov esi, dword [esi + 4]
test esi, esi
jne 0x588c06
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0x20]
test edx, edx
je 0x588c48
test ecx, ecx
je 0x588c48
mov eax, dword [edx + 8]
and eax, 0xfffffffd
mov dword [edx + 0xc], ecx
or eax, 1
mov dword [edx + 8], eax
push 9
push edi
call fcn.0058ed30
push 0
push 1
push 0x20
push edi
call fcn.0058fb20
add esp, 0x18
cmp dword [esp + 0x11c], 0
je 0x588cd9
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x120]
add esp, 4
mov esi, eax
test edx, edx
je 0x588ca0
nop
mov ecx, dword [edx]
test ecx, ecx
je 0x588c99
test esi, esi
je 0x588c99
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x588c80
push 0xffffffffffffffff
push 0x40
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
mov esi, dword [esp + 0x10c]
push 0x22
push edi
call fcn.0058ec30
add esp, 0x20
test eax, eax
je 0x588cd9
test esi, esi
je 0x588cd9
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], esi
or ecx, 1
mov dword [eax + 8], ecx
test dword [ebx + 0x40], 0x20000000
je 0x588d02
push edi
call fcn.0058ecc0
add esp, 4
test ebp, ebp
je 0x588d02
test eax, eax
je 0x588d02
mov ecx, dword [ebp + 8]
and ecx, 0xfffffffd
mov dword [ebp + 0xc], eax
or ecx, 1
mov dword [ebp + 8], ecx
mov esi, dword [esp + 0x198]
cmp esi, 1
je 0x588d6b
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x110]
add esp, 4
mov esi, eax
mov dword [esp + 0xec], esi
test edx, edx
je 0x588d50
nop dword [eax + eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x588d49
test esi, esi
je 0x588d49
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x588d30
push dword [esp + 0xf0]
lea eax, [esp + 0x34]
push eax
call fcn.0058c620
mov esi, dword [esp + 0x1a0]
add esp, 8
cmp dword [esp + 0xa0], 0
je 0x588d82
push edi
call fcn.0058ecc0
add esp, 4
mov dword [esp + 0x18], eax
push dword [esp + 0x184]
lea eax, [esp + 0x34]
push eax
call fcn.00571930
add esp, 8
cmp dword [edi], 0
push edi
je 0x588dee
call fcn.0058fc70
push ebx
push dword [esp + 0x4c]
call fcn.0058b560
push ebx
push dword [esp + 0x4c]
call fcn.0058b560
mov eax, dword [esp + 0x54]
add esp, 0x14
test eax, eax
je 0x5884f3
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
mov edi, dword [eax]
push eax
call dword [0x5cd3f0]
call esi
add esp, 8
mov eax, edi
test edi, edi
jne 0x588dc4
lea eax, [edi - 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
call fcn.0058ecc0
add esp, 4
mov ebp, eax
cmp esi, 2
jne 0x588e79
push 0
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push edi
call fcn.0058d8e0
push dword [esp + 0x70]
mov esi, eax
push 0x8d
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x9c]
push 0x8d
push 0x20
push edi
call fcn.0058eef0
add esp, 0x48
push 0
push 1
push dword [esp + 0x70]
push 0x8d
push 0x20
push edi
call fcn.0058eef0
push edi
call fcn.0058ecc0
add esp, 0x1c
test esi, esi
je 0x588e79
test eax, eax
je 0x588e79
mov ecx, dword [esi + 8]
and ecx, 0xfffffffd
mov dword [esi + 0xc], eax
or ecx, 1
mov dword [esi + 8], ecx
cmp dword [ebx + 0x40], 0
jl 0x588e9c
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x588e9c
push eax
push 0x8d
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x588eb9
sub ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
add ecx, 2
sar ecx, 1
mov eax, dword [eax + ecx*4]
sar eax, 3
jmp 0x588ebd
mov eax, dword [esp + 0x58]
push eax
push 0x8d
push 0
push 2
push 0x20
push edi
call fcn.0058eef0
mov eax, dword [ebx + 0x40]
add esp, 0x18
test eax, eax
js 0x588fbd
mov esi, dword [esp + 0xfc]
test esi, esi
je 0x588f7e
test eax, 0x100
jne 0x588fbd
cmp dword [esp + 0x6c], 0
push 0
push 0xc
push 0
je 0x588f64
push 4
push 0x20
push edi
call fcn.0058eef0
push 0
push 1
push 0
push 0xc
push 0x20
push edi
call fcn.0058eef0
mov esi, dword [esp + 0x12c]
push 0
push 1
push 0
push 2
push 2
push edi
call fcn.0058d8e0
add esp, 0x48
test eax, eax
je 0x588f4f
test esi, esi
je 0x588f4f
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], esi
or ecx, 1
mov dword [eax + 8], ecx
push 0
push 4
push 0
push 0xc
push 0x20
push edi
call fcn.0058eef0
add esp, 0x18
jmp 0x588fbd
push 2
push 2
push edi
call fcn.0058d8e0
add esp, 0x18
test eax, eax
je 0x588fbd
test esi, esi
je 0x588fbd
mov dword [eax + 0xc], esi
jmp 0x588fb1
cmp dword [esp + 0x6c], 0
mov ecx, 0xc
push 0
mov eax, 1
cmove eax, ecx
push eax
push 0
push 2
push 2
push edi
call fcn.0058d8e0
add esp, 0x18
test eax, eax
je 0x588fbd
mov edx, dword [esp + 0x24]
test edx, edx
je 0x588fbd
mov dword [eax + 0xc], edx
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
or ecx, 1
mov dword [eax + 8], ecx
mov esi, dword [esp + 0x28]
test esi, esi
je 0x588ff0
push edi
call fcn.0058ecc0
add esp, 4
mov edx, eax
mov ecx, dword [esi]
test ecx, ecx
je 0x588fe9
test edx, edx
je 0x588fe9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], edx
or eax, 1
mov dword [ecx + 8], eax
mov esi, dword [esi + 4]
test esi, esi
jne 0x588fd0
cmp dword [esp + 0x198], 2
jne 0x589030
mov esi, dword [esp + 0xec]
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push edi
call fcn.0058d8e0
add esp, 0x18
test eax, eax
je 0x589030
test esi, esi
je 0x589030
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], esi
or ecx, 1
mov dword [eax + 8], ecx
push 0xffffffffffffffff
push 0x40
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
mov esi, dword [esp + 0x108]
push 0x22
push edi
call fcn.0058ec30
add esp, 0x20
test eax, eax
je 0x589069
test esi, esi
je 0x589069
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], esi
or ecx, 1
mov dword [eax + 8], ecx
lea eax, [esp + 0x30]
push eax
call fcn.005869a0
add esp, 4
cmp dword [esp + 0xa0], 0
je 0x5891a3
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x30]
add esp, 4
test edx, edx
je 0x5890a8
test eax, eax
je 0x5890a8
mov ecx, dword [edx + 8]
and ecx, 0xfffffffd
mov dword [edx + 0xc], eax
or ecx, 1
mov dword [edx + 8], ecx
push 0
push 8
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
push 0x30
push 0x81
push 0
push 3
push 0x25
push edi
call fcn.0058eef0
push 4
push 0x40
push 0
push 3
push 0x265
push edi
call fcn.0058f520
add esp, 0x48
push 1
push edi
call fcn.0058ec30
mov esi, dword [esp + 0x20]
add esp, 8
test eax, eax
je 0x589107
test esi, esi
je 0x589107
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], esi
or ecx, 1
mov dword [eax + 8], ecx
push 8
push 0x40
push 0
push 3
push 0x265
push edi
call fcn.0058f520
push 0
push edi
call fcn.0058ec30
add esp, 0x20
test eax, eax
je 0x589140
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x589140
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], edx
or ecx, 1
mov dword [eax + 8], ecx
push 4
push 0x81
push 0
push 3
push 0x20
push edi
call fcn.0058eef0
push 0
push 2
push 0
push 3
push 1
push edi
call fcn.0058d8e0
add esp, 0x30
test eax, eax
je 0x589181
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x589181
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], edx
or ecx, 1
mov dword [eax + 8], ecx
push 0x22
push edi
call fcn.0058ec30
add esp, 8
test eax, eax
je 0x5891a3
test esi, esi
je 0x5891a3
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], esi
or ecx, 1
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x104]
mov esi, dword [esp + 0xf0]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x108], eax
mov dword [esp + 0xb4], 1
test eax, eax
je 0x5892c0
mov eax, dword [esp + 0x14]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, 7
sar eax, 3
push ebx
push eax
mov dword [esp + 0x90], eax
call fcn.0058b580
add esp, 8
mov dword [esp + 0x8c], eax
test eax, eax
je 0x589263
nop dword [eax + eax]
lea eax, [esp + 0x30]
push eax
call fcn.00579150
add esp, 4
cmp dword [edi], 0
jne 0x589253
lea eax, [esp + 0x30]
push eax
call fcn.005869a0
mov eax, dword [esp + 0x10c]
add esp, 4
mov eax, dword [eax]
mov dword [esp + 0x108], eax
test eax, eax
jne 0x589220
push ebx
push dword [esp + 0x90]
call fcn.0058b560
add esp, 8
cmp dword [esp + 0x108], 0
je 0x5892c0
push edi
call fcn.0058fc70
push ebx
push dword [esp + 0x4c]
call fcn.0058b560
push ebx
push dword [esp + 0x4c]
call fcn.0058b560
mov eax, dword [esp + 0x54]
add esp, 0x14
test eax, eax
je 0x5884f3
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
mov edi, dword [eax]
push eax
call dword [0x5cd3f0]
call esi
add esp, 8
mov eax, edi
test edi, edi
jne 0x589296
lea eax, [edi - 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
push edi
mov dword [esp + 0xb8], 0
mov dword [esp + 0xf4], esi
call fcn.0058ecc0
mov edx, dword [esp + 0x12c]
add esp, 4
mov esi, eax
test edx, edx
je 0x589308
mov ecx, dword [edx]
test ecx, ecx
je 0x589301
test esi, esi
je 0x589301
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5892e8
push 0
push 0x8d
push edi
call fcn.0058e100
push 0
push 2
push 4
push 0x8d
push 0x20
push edi
call fcn.0058eef0
push 0
push 8
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
push 0x2000
push 0x40
push 0
push 0xa
push 0
push 2
push 0x62
push edi
call fcn.0058f130
add esp, 0x5c
push 0
push 0x81
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
push 0
push 3
push 0
push 0xa
push 0x20
push edi
call fcn.0058eef0
push fcn.005904a0
push 0x40
push 0x111
push 0x24
push edi
call fcn.0058e730
add esp, 0x44
push 0
push 0x40
push 0
push 1
push 0
push edi
call fcn.0058d8e0
push 0
push 0xa
push 0
push 3
push 0x20
push edi
mov esi, eax
call fcn.0058eef0
push 0
push 1
push 0
push 0xa
push 0x20
push edi
call fcn.0058eef0
add esp, 0x48
push 0
push 0x8d
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
push 4
push 0x8d
push 0
push 2
push 0x20
push edi
call fcn.0058eef0
push 0
push 1
push 0x80
push edi
call fcn.0058f8f0
add esp, 0x40
push edi
call fcn.0058ecc0
add esp, 4
test esi, esi
je 0x589419
test eax, eax
je 0x589419
mov ecx, dword [esi + 8]
and ecx, 0xfffffffd
mov dword [esi + 0xc], eax
or ecx, 1
mov dword [esi + 8], ecx
push 0xffffffffffffffd2
push 0x40
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
mov esi, dword [esp + 0x108]
push 0x22
push edi
call fcn.0058ec30
add esp, 0x20
test eax, eax
je 0x589452
test esi, esi
je 0x589452
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], esi
or ecx, 1
mov dword [eax + 8], ecx
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x128]
add esp, 4
mov esi, eax
test edx, edx
je 0x589488
mov ecx, dword [edx]
test ecx, ecx
je 0x589481
test esi, esi
je 0x589481
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589468
push 0xffffffffffffffd1
push 0x40
push 0
push 1
push 0x20
push edi
call fcn.0058eef0
mov esi, dword [esp + 0x108]
push 0x22
push edi
call fcn.0058ec30
add esp, 0x20
test eax, eax
je 0x5894c1
test esi, esi
je 0x5894c1
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], esi
or ecx, 1
mov dword [eax + 8], ecx
cmp dword [esp + 0x12c], 0
je 0x58950e
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x130]
add esp, 4
mov esi, eax
test edx, edx
je 0x589501
mov ecx, dword [edx]
test ecx, ecx
je 0x5894fa
test esi, esi
je 0x5894fa
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5894e1
lea eax, [esp + 0x30]
push eax
call fcn.00580c50
add esp, 4
cmp dword [esp + 0x130], 0
je 0x58955d
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x134]
add esp, 4
mov esi, eax
test edx, edx
je 0x589550
nop
mov ecx, dword [edx]
test ecx, ecx
je 0x589549
test esi, esi
je 0x589549
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589530
lea eax, [esp + 0x30]
push eax
call fcn.0056fec0
add esp, 4
cmp dword [esp + 0x134], 0
je 0x589664
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x138]
add esp, 4
mov esi, eax
test edx, edx
je 0x5895a1
mov ecx, dword [edx]
test ecx, ecx
je 0x58959a
test esi, esi
je 0x58959a
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589581
mov esi, dword [esp + 0x30]
push 0
push 5
push esi
call fcn.0058e100
push 0xa
push 0x40
push 0
push 1
push 0
push 1
push 0x62
push esi
call fcn.0058f130
add esp, 0x2c
cmp dword [esi], 0
jne 0x5895dc
push 3
push 0x40
push 0
push 1
push esi
call fcn.00581810
add esp, 0x14
push 5
push 0
push 3
push 0x20
push esi
call fcn.0058f620
add esp, 0x14
cmp dword [esi], 0
jne 0x589603
push 0x7b
push 0x40
push 0
push 1
push esi
call fcn.00581810
add esp, 0x14
push 0
push 0
push 3
push 0x66
push esi
call fcn.0058f620
push 1
push 0x40
push 0
push 1
push 0
push 1
push 0x66
push esi
call fcn.0058f130
add esp, 0x34
cmp dword [esi], 0
jne 0x589641
push 0x201f
push 0x40
push 0
push 1
push esi
call fcn.00581810
add esp, 0x14
push 0
push 0
push 3
push 0x266
push esi
call fcn.0058f620
push 0
push 5
push 0x80
push esi
call fcn.0058f8f0
add esp, 0x24
cmp dword [esp + 0x138], 0
je 0x5896b1
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x13c]
add esp, 4
mov esi, eax
test edx, edx
je 0x5896a4
mov ecx, dword [edx]
test ecx, ecx
je 0x58969d
test esi, esi
je 0x58969d
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589684
lea eax, [esp + 0x30]
push eax
call fcn.0056f4c0
add esp, 4
cmp dword [esp + 0x13c], 0
je 0x5897b8
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x140]
add esp, 4
mov esi, eax
test edx, edx
je 0x5896f5
mov ecx, dword [edx]
test ecx, ecx
je 0x5896ee
test esi, esi
je 0x5896ee
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5896d5
mov esi, dword [esp + 0x30]
push 0
push 5
push esi
call fcn.0058e100
push 0xa
push 0x40
push 0
push 1
push 0
push 1
push 0x62
push esi
call fcn.0058f130
add esp, 0x2c
cmp dword [esi], 0
jne 0x589730
push 3
push 0x40
push 0
push 1
push esi
call fcn.00581810
add esp, 0x14
push 5
push 0
push 3
push 0x20
push esi
call fcn.0058f620
add esp, 0x14
cmp dword [esi], 0
jne 0x589757
push 0x7b
push 0x40
push 0
push 1
push esi
call fcn.00581810
add esp, 0x14
push 0
push 0
push 3
push 0x66
push esi
call fcn.0058f620
push 1
push 0x40
push 0
push 1
push 0
push 1
push 0x66
push esi
call fcn.0058f130
add esp, 0x34
cmp dword [esi], 0
jne 0x589795
push 0x201f
push 0x40
push 0
push 1
push esi
call fcn.00581810
add esp, 0x14
push 0
push 0
push 3
push 0x266
push esi
call fcn.0058f620
push 0
push 5
push 0x80
push esi
call fcn.0058f8f0
add esp, 0x24
cmp dword [esp + 0x140], 0
je 0x589805
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x144]
add esp, 4
mov esi, eax
test edx, edx
je 0x5897f8
mov ecx, dword [edx]
test ecx, ecx
je 0x5897f1
test esi, esi
je 0x5897f1
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5897d8
lea eax, [esp + 0x30]
push eax
call fcn.0057fee0
add esp, 4
cmp dword [esp + 0x144], 0
je 0x589852
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x148]
add esp, 4
mov esi, eax
test edx, edx
je 0x589845
mov ecx, dword [edx]
test ecx, ecx
je 0x58983e
test esi, esi
je 0x58983e
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589825
lea eax, [esp + 0x30]
push eax
call fcn.00580080
add esp, 4
cmp dword [esp + 0x148], 0
je 0x58990c
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x14c]
add esp, 4
mov esi, eax
test edx, edx
je 0x589896
mov ecx, dword [edx]
test ecx, ecx
je 0x58988f
test esi, esi
je 0x58988f
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589876
movzx eax, word [ebx + 0x68]
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x34]
push eax
call fcn.00580aa0
push 0
push 1
push 0
push 2
push 4
push edi
call fcn.0058d8e0
add esp, 0x20
test eax, eax
je 0x5898da
mov edx, dword [esp + 0x10]
test edx, edx
je 0x5898da
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], edx
or ecx, 1
mov dword [eax + 8], ecx
push 0
push 1
push 0
push 2
push 0x20
push edi
call fcn.0058eef0
push 0x22
push edi
call fcn.0058ec30
add esp, 0x20
test eax, eax
je 0x58990c
test ebp, ebp
je 0x58990c
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebp
or ecx, 1
mov dword [eax + 8], ecx
cmp dword [esp + 0x16c], 0
je 0x58995d
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x170]
add esp, 4
mov esi, eax
test edx, edx
je 0x589950
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x589949
test esi, esi
je 0x589949
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589930
lea eax, [esp + 0x30]
push eax
call fcn.00581260
add esp, 4
cmp dword [esp + 0x170], 0
je 0x5899ad
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x174]
add esp, 4
mov esi, eax
test edx, edx
je 0x5899a0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x589999
test esi, esi
je 0x589999
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589980
lea eax, [esp + 0x30]
push eax
call fcn.00581400
add esp, 4
cmp dword [esp + 0x174], 0
je 0x5899fd
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x178]
add esp, 4
mov esi, eax
test edx, edx
je 0x5899f0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5899e9
test esi, esi
je 0x5899e9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5899d0
lea eax, [esp + 0x30]
push eax
call fcn.00580ef0
add esp, 4
cmp dword [esp + 0x178], 0
je 0x589a4d
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x17c]
add esp, 4
mov esi, eax
test edx, edx
je 0x589a40
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x589a39
test esi, esi
je 0x589a39
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589a20
lea eax, [esp + 0x30]
push eax
call fcn.00581080
add esp, 4
cmp dword [esp + 0x164], 0
je 0x589a9d
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x168]
add esp, 4
mov esi, eax
test edx, edx
je 0x589a90
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x589a89
test esi, esi
je 0x589a89
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589a70
lea eax, [esp + 0x30]
push eax
call fcn.00580830
add esp, 4
cmp dword [esp + 0x168], 0
je 0x589aed
push edi
call fcn.0058ecc0
mov edx, dword [esp + 0x16c]
add esp, 4
mov esi, eax
test edx, edx
je 0x589ae0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x589ad9
test esi, esi
je 0x589ad9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], esi
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x589ac0
lea eax, [esp + 0x30]
push eax
call fcn.00580940
add esp, 4
push ebx
push dword [esp + 0x48]
call fcn.0058b560
push ebx
push dword [esp + 0x48]
call fcn.0058b560
push edi
call fcn.0058fe50
mov ebp, eax
mov eax, dword [edi + 0x54]
push edi
mov dword [esp + 0x28], eax
call fcn.0058fc70
add esp, 0x18
test ebp, ebp
jne 0x589b5a
mov eax, dword [esp + 0x40]
test eax, eax
je 0x5884f3
nop dword [eax]
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
mov edi, dword [eax]
push eax
call dword [0x5cd3f0]
call esi
add esp, 8
mov eax, edi
test edi, edi
jne 0x589b30
lea eax, [edi - 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
mov esi, dword [ebx + 0x10]
test esi, esi
jne 0x589bcf
push ebx
push 0x2c
call fcn.0058b580
mov esi, eax
add esp, 8
test esi, esi
jne 0x589bb1
push ebp
call fcn.0058fce0
mov eax, dword [esp + 0x44]
add esp, 4
test eax, eax
je 0x5884f3
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
mov edi, dword [eax]
push eax
call dword [0x5cd3f0]
call esi
add esp, 8
mov eax, edi
test edi, edi
jne 0x589b87
lea eax, [edi - 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
push 0x2c
push 0
push esi
call fcn.00599af0
movzx eax, word [ebx + 0x68]
add esp, 0xc
inc eax
mov dword [esi + 0x24], eax
mov eax, dword [ebx + 0x50]
mov dword [esi + 0x28], eax
mov dword [ebx + 0x10], esi
mov eax, dword [esp + 0x198]
xor ecx, ecx
cmp eax, 1
je 0x589be4
cmp eax, 2
setne cl
inc ecx
mov dword [esi + ecx*4], ebp
mov eax, dword [esp + 0x40]
mov dword [esi + ecx*4 + 0xc], eax
mov eax, dword [esp + 0x10]
pop edi
mov dword [esi + ecx*4 + 0x18], eax
xor eax, eax
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
push eax
call dword [0x5cd3f0]
call esi
add esp, 8
mov eax, dword [edi + 0x34]
test eax, eax
je 0x589c33
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
push eax
call dword [0x5cd3f0]
call esi
add esp, 8
push dword [ebx + 8]
mov esi, dword [ebx + 4]
mov ecx, esi
push edi
call dword [0x5cd3f0]
call esi
add esp, 8
push ebx
push dword [esp + 0x48]
call fcn.0058b560
push ebx
push dword [esp + 0x48]
jmp 0x5884eb
pop esi
pop ebp
mov eax, 0xffffffd4
pop ebx
add esp, 0x180
ret