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

Disassembly:
sub esp, 0xa4
push ebx
push ebp
mov ebp, dword [esp + 0xc0]
xor ebx, ebx
push esi
mov esi, dword [esp + 0xb4]
push edi
mov edi, dword [esp + 0xc0]
mov dword [esp + 0x48], ebx
lea eax, [edi + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [esi]
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 0x50]
mov dword [esp + 0x28], eax
movzx eax, byte [ebp + 0x3c]
imul ecx, eax, 0x48
mov eax, dword [edi + 4]
add eax, 8
add eax, ecx
mov dword [esp + 0x6c], eax
mov eax, dword [eax + 0x2c]
push eax
mov dword [esp + 0x3c], eax
lea eax, [edi + 0x1f0]
push eax
call fcn.00589d6a
not eax
not edx
and eax, dword [esp + 0xd4]
and edx, dword [esp + 0xd8]
pop ecx
pop ecx
mov ecx, dword [esp + 0xc4]
mov dword [ebp + 0x58], eax
mov dword [ebp + 0x5c], edx
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
call fcn.0059dc20
mov edi, dword [esi + 0x38]
xor ecx, ecx
dec edi
inc ecx
mov dword [esi + 0x38], edi
and eax, ecx
mov dword [esp + 0x30], eax
mov dword [ebp + 0x10], edi
mov dword [ebp + 0xc], edi
mov eax, dword [esi + 0x38]
dec eax
mov dword [esp + 0x14], edi
mov dword [esi + 0x38], eax
mov dword [esp + 0x78], eax
mov dword [ebp + 0x18], eax
cmp byte [ebp + 0x3c], bl
jbe 0x58762b
mov eax, dword [esp + 0x6c]
test byte [eax + 0x24], 8
je 0x58762b
mov eax, dword [esi + 0x2c]
inc eax
push eax
push ebx
mov ebx, dword [esp + 0xc4]
push 0x47
mov dword [esi + 0x2c], eax
push ebx
mov dword [ebp], eax
call fcn.0057b76b
add esp, 0x10
jmp 0x587632
mov ebx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc4]
mov ecx, eax
mov esi, dword [esp + 0xc0]
test eax, eax
jle 0x587665
imul eax, eax, 0x60
add eax, 0x330
add eax, esi
xor edx, edx
cmp dword [eax - 0x38], edx
jne 0x587667
cmp dword [eax], edx
jne 0x587667
dec ecx
sub eax, 0x60
test ecx, ecx
jg 0x587652
jmp 0x587667
xor edx, edx
imul eax, ecx, 0x60
push 0xb
pop ecx
mov esi, dword [eax + esi + 0x304]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x60], esi
test byte [eax + 0x28], 0x20
je 0x5876aa
push dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
push edx
push esi
push ecx
push ebx
call fcn.0057b786
push edi
push esi
push 0xc
push ebx
call fcn.0057b76b
add esp, 0x24
mov dword [ebp + 0x44], eax
mov byte [ebp + 0x3d], 9
jmp 0x588be6
mov edi, dword [esp + 0x28]
mov eax, dword [edi + 0x2c]
bt eax, 0xa
jae 0x587a37
movzx eax, word [edi + 0x30]
mov dword [esp + 0x1c], eax
add eax, 2
push eax
push dword [esp + 0xbc]
call fcn.00569724
mov edx, dword [ebp + 0xc]
xor esi, esi
mov edi, esi
mov dword [esp + 0x20], eax
pop ecx
pop ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x24], esi
cmp dword [esp + 0x1c], esi
jbe 0x587800
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x38]
mov ecx, dword [eax + edi*4]
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x5877ed
xor eax, eax
inc eax
test byte [ecx + 0xc], al
je 0x5877a1
mov edx, eax
mov ecx, edi
shl edx, cl
xor eax, eax
mov ecx, dword [esp + 0x28]
cmp edi, 0x1f
cmovbe eax, edx
test dword [ecx + 0x28], eax
je 0x587774
mov ecx, dword [esp + 0xb8]
mov edi, dword [ecx + 0x28]
inc dword [ecx + 0x2c]
mov esi, dword [ecx + 0x2c]
push edi
lea eax, [edi + 1]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x24]
push dword [eax]
push ecx
call fcn.0055da4a
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
add ecx, 2
push esi
add eax, ecx
push eax
push edi
push 0xaf
push ebx
call fcn.0057b786
mov edi, dword [esp + 0x44]
add esp, 0x20
xor esi, esi
jmp 0x5877ed
mov eax, dword [esp + 0x18]
add eax, 2
add eax, edi
push eax
push dword [esp + 0x34]
mov eax, dword [esp + 0x28]
push edi
push ebp
push eax
push dword [esp + 0xcc]
call fcn.0053a8b1
mov eax, dword [ebp + 0x10]
add esp, 0x18
mov dword [esp + 0x14], eax
jmp 0x5877ed
push eax
mov eax, dword [esp + 0x1c]
add eax, 2
add eax, edi
push eax
mov eax, dword [ecx]
push dword [eax + 0x10]
push dword [esp + 0xc4]
call fcn.0053ad2e
mov eax, dword [esp + 0x30]
add esp, 0x10
cmp byte [eax + 0xf], 0x4a
mov eax, dword [esp + 0x28]
jne 0x5877f1
test byte [eax + 0x1c], 2
je 0x5877f1
mov eax, dword [esp + 0xc0]
mov eax, dword [eax + 0x10]
push dword [eax + 0xc]
push esi
push 0x47
push ebx
call fcn.0057b76b
add esp, 0x10
mov eax, dword [esp + 0x28]
inc edi
mov dword [esp + 0x24], edi
cmp edi, dword [esp + 0x1c]
jl 0x5876f6
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x18]
push edi
push dword [eax + 0x18]
push 0x47
push ebx
call fcn.0057b76b
lea eax, [edi + 1]
push eax
push dword [esp + 0x30]
push 0x47
push ebx
call fcn.0057b76b
mov ecx, dword [esp + 0x48]
xor eax, eax
push 0xffffffffffffffff
inc eax
test byte [ecx + 0x1c], al
pop eax
push 0xfffffffffffffffa
pop edx
cmovne eax, edx
push eax
push dword [ecx + 0x24]
push edi
push dword [esp + 0x40]
push dword [esp + 0x68]
push 6
push ebx
call fcn.0057b7e0
mov edi, dword [esp + 0x64]
add esp, 0x3c
mov eax, dword [esp + 0x3c]
and dword [edi + 0x1c], 0xfffffffe
cmp byte [eax + 0x57], 0
je 0x587864
mov dword [edi + 0x24], esi
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0xc0]
mov dword [ebp + 0x40], eax
push 0x3f
pop eax
cmp byte [ecx + 0x2e], 0
lea edx, [eax + 0x7c]
cmovne eax, edx
xor esi, esi
mov byte [ebp + 0x3d], al
mov eax, dword [ebx + 0x6c]
mov dword [ebp + 0x44], eax
mov dword [esp + 0x20], esi
cmp dword [esp + 0x1c], esi
jbe 0x588be6
mov eax, dword [edi + 0x38]
mov edx, dword [eax + esi*4]
mov dword [esp + 0x50], edx
cmp esi, 0x10
jae 0x5878c6
mov ax, word [edi + 0x22]
mov cx, si
shr ax, cl
xor ecx, ecx
inc ecx
test cl, al
je 0x5878c6
push edx
push ebp
call fcn.0053e1ab
pop ecx
pop ecx
jmp 0x587a23
xor eax, eax
inc eax
test byte [edx + 0xc], al
je 0x587a23
mov edx, eax
mov ecx, esi
shl edx, cl
xor eax, eax
cmp esi, 0x1f
cmovbe eax, edx
test dword [edi + 0x28], eax
jne 0x587a23
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0x57], 0
jne 0x587a23
xor edx, edx
mov dword [esp + 0x14], edx
cmp dword [ebp + 0x48], edx
jle 0x58798a
mov edi, dword [ebp + 0x4c]
push 4
pop eax
add edi, eax
push dword [edi]
push ebx
call fcn.0058273c
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x24], ecx
mov al, byte [ecx]
mov byte [esp + 0x13], al
lea eax, [ecx + 0xc]
cmp byte [esp + 0x13], 0x5e
jne 0x587941
mov ecx, dword [esp + 0x18]
add ecx, 2
add ecx, esi
cmp dword [eax], ecx
jne 0x58795a
mov ecx, dword [esp + 0x24]
jmp 0x587971
cmp byte [esp + 0x13], 0x87
mov dword [esp + 0x24], eax
jne 0x58795a
mov eax, dword [esp + 0x18]
add eax, 2
add eax, esi
cmp dword [ecx + 8], eax
je 0x58796d
mov eax, dword [esp + 0x14]
add edi, 0x14
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [ebp + 0x48]
jl 0x58790e
jmp 0x58798a
mov eax, dword [esp + 0x24]
push dword [eax]
movzx eax, byte [esp + 0x17]
push dword [ecx + 8]
push dword [ecx + 4]
push eax
push ebx
call fcn.0057b786
add esp, 0x14
xor edx, edx
push edx
push edx
push 0x35
push dword [esp + 0xc4]
call fcn.0056da79
mov edi, eax
add esp, 0x10
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0x57], 0
jne 0x587a12
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + 0x1c]
mov ecx, dword [ecx]
mov edx, dword [ecx + 0xc]
test eax, eax
jle 0x5879c3
imul ecx, eax, 0x14
mov eax, dword [edx + 0x14]
mov edx, dword [eax + ecx - 0xc]
mov eax, dword [esp + 0x3c]
xor esi, esi
push esi
push 0xb0
push eax
mov dword [edi + 0xc], edx
call fcn.0056226d
add esp, 0xc
mov dword [edi + 0x10], eax
test eax, eax
je 0x587a07
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
add edx, 2
add ecx, edx
push 0x10
mov dword [eax + 0x1c], ecx
push dword [ebp + 0x18]
push edi
push dword [esp + 0xc4]
call fcn.00564a78
add esp, 0x10
mov eax, dword [esp + 0x3c]
mov dword [edi + 0xc], esi
mov esi, dword [esp + 0x20]
test edi, edi
je 0x587a1f
push edi
push eax
call fcn.0056485a
pop ecx
pop ecx
mov edi, dword [esp + 0x28]
inc esi
mov dword [esp + 0x20], esi
cmp esi, dword [esp + 0x1c]
jl 0x587898
jmp 0x588be6
test al, 5
setne cl
bt eax, 8
setb al
test al, cl
je 0x587aed
mov eax, dword [edi + 0x38]
mov ecx, dword [esp + 0xb8]
mov eax, dword [eax]
inc dword [ecx + 0x2c]
mov esi, dword [ecx + 0x2c]
push esi
push dword [esp + 0x34]
push edx
push ebp
push eax
push ecx
call fcn.0053a8b1
mov edi, eax
add esp, 0x18
cmp edi, esi
je 0x587a83
push esi
push dword [esp + 0xbc]
call fcn.00573e04
pop ecx
pop ecx
cmp dword [ebp + 0x34], 0
mov esi, dword [ebp + 0x10]
je 0x587ad3
push esi
push edi
push 0xd
push ebx
call fcn.0057b76b
xor eax, eax
inc eax
push eax
push edi
push esi
push dword [ebp + 0x34]
push 0x40
push ebx
call fcn.0057b858
push dword [esp + 0xf8]
push dword [esp + 0xf8]
push esi
push dword [esp + 0xf8]
push dword [esp + 0xf8]
push dword [esp + 0xf4]
call fcn.005413c0
add esp, 0x40
push edi
push esi
push dword [esp + 0x40]
push 0x1e
push ebx
call fcn.0057b786
add esp, 0x14
mov byte [ebp + 0x3d], 0xbb
jmp 0x588be6
mov ecx, dword [edi + 0x2c]
mov eax, ecx
and eax, 0x102
cmp eax, 0x102
jne 0x587d00
mov dword [esp + 0x24], 0xbb
mov edi, edx
mov dword [esp + 0x50], edx
mov esi, edx
mov dword [esp + 0x20], edx
test cl, 0x20
je 0x587b29
mov eax, dword [esp + 0x28]
push 4
mov eax, dword [eax + 0x38]
mov esi, dword [eax]
pop eax
mov edx, eax
test cl, 0x10
je 0x587b3c
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x38]
mov edi, dword [edx + eax]
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x30]
test eax, eax
je 0x587b52
mov eax, esi
mov esi, edi
mov edi, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x20], edi
test esi, esi
je 0x587c02
mov edi, dword [esi]
mov dword [esp + 0x1c], 0x17151618
push dword [edi + 0x10]
call fcn.00565b08
pop ecx
xor ecx, ecx
inc ecx
cmp eax, ecx
jle 0x587ba8
mov edx, dword [esp + 0xb8]
push edx
call fcn.00569765
mov esi, eax
xor eax, eax
inc eax
push eax
push esi
push dword [edi + 0x10]
push edx
call fcn.0053ad2e
movzx ecx, byte [edi]
add esp, 0x14
inc ecx
xor edx, edx
and ecx, 2
inc edx
or ecx, edx
mov eax, esi
mov cl, byte [esp + ecx + 0x1c]
jmp 0x587bd9
lea eax, [esp + 0x60]
push eax
push dword [edi + 0x10]
push dword [esp + 0xc0]
call fcn.00564221
push esi
push ebp
mov dword [esp + 0x40], eax
call fcn.0053e1ab
movzx ecx, byte [edi]
add esp, 0x14
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x2c]
mov cl, byte [esp + ecx - 0x1a]
push eax
push dword [esp + 0x18]
movzx eax, cl
push dword [esp + 0x40]
push eax
push ebx
call fcn.0057b786
push esi
push dword [esp + 0xd0]
call fcn.00573e04
mov edi, dword [esp + 0x3c]
add esp, 0x1c
jmp 0x587c20
push dword [esp + 0x60]
xor ecx, ecx
push dword [esp + 0x3c]
inc ecx
xor eax, ecx
lea eax, [eax*4 + 0x20]
push eax
push ebx
call fcn.0057b76b
add esp, 0x10
test edi, edi
je 0x587c9c
mov ecx, dword [esp + 0xb8]
xor edx, edx
mov esi, dword [edi]
inc edx
push edx
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
push eax
push dword [esi + 0x10]
mov dword [esp + 0x5c], eax
push ecx
call fcn.0053ad2e
push dword [esi + 0x10]
call fcn.00565b08
xor ecx, ecx
add esp, 0x14
inc ecx
cmp eax, ecx
jg 0x587c74
mov al, byte [esi]
cmp al, 0x38
je 0x587c61
cmp al, 0x36
jne 0x587c74
mov eax, dword [esp + 0x30]
xor eax, ecx
lea edx, [eax*2 + 0x37]
mov dword [esp + 0x24], edx
jmp 0x587c83
mov eax, dword [esp + 0x30]
lea eax, [eax*2 + 0x36]
mov dword [esp + 0x24], eax
push dword [esi + 0x10]
call fcn.00565b08
pop ecx
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x587c9c
push edi
push ebp
call fcn.0053e1ab
pop ecx
pop ecx
cmp dword [esp + 0x30], 0
mov ecx, dword [ebx + 0x6c]
mov edi, dword [esp + 0x24]
sete al
mov edx, dword [esp + 0x38]
add al, 0x26
mov byte [ebp + 0x3d], al
mov dword [ebp + 0x40], edx
mov dword [ebp + 0x44], ecx
cmp edi, 0xbb
je 0x588be6
mov eax, dword [esp + 0xb8]
inc dword [eax + 0x2c]
mov esi, dword [eax + 0x2c]
push esi
push edx
push 0x87
push ebx
call fcn.0057b76b
push esi
push dword [esp + 0x28]
push dword [esp + 0x68]
push edi
push ebx
call fcn.0057b786
push 0x53
push ebx
call fcn.0057bb2b
add esp, 0x2c
jmp 0x588be6
test ecx, 0x200
je 0x588596
movzx esi, word [edi + 0x18]
movzx eax, si
mov dword [esp + 0x1c], eax
movzx eax, word [edi + 0x1a]
mov dword [esp + 0x14], eax
movzx eax, word [edi + 0x1c]
mov edi, edx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x40], esi
mov dword [esp + 0x54], edx
mov dword [esp + 0x44], edx
mov eax, dword [eax + 0x20]
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x50], edx
mov byte [esp + 0x13], dl
mov byte [esp + 0x67], dl
mov dword [esp + 0x58], edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], eax
movzx esi, si
test cl, 0x20
je 0x587d80
mov edi, dword [esp + 0x28]
mov eax, dword [edi + 0x38]
mov eax, dword [eax + esi*4]
inc esi
mov dword [esp + 0x54], eax
movzx eax, word [edi + 0x1a]
mov edi, eax
mov dword [esp + 0x2c], eax
test cl, 0x10
je 0x587e3d
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x38]
mov eax, dword [eax + esi*4]
movzx esi, word [ecx + 0x1c]
mov ecx, 0x100
cmp edi, esi
mov dword [esp + 0x44], eax
cmova esi, edi
test word [eax + 0xa], cx
je 0x587df5
mov ecx, dword [esp + 0xb8]
mov eax, dword [ecx + 0x2c]
inc eax
push eax
mov dword [ecx + 0x2c], eax
mov dword [ebp + 0x2c], eax
xor eax, eax
inc eax
push eax
push 0x47
push ebx
call fcn.0057b76b
mov ecx, dword [esp + 0x58]
add esp, 0x10
mov eax, dword [ebx + 0x6c]
shl dword [ebp + 0x2c], 1
mov edi, dword [esp + 0x40]
mov dword [ebp + 0x30], eax
mov eax, dword [ecx + 0x1c]
xor ecx, ecx
movzx edx, di
cmp byte [edx + eax], 1
sete cl
xor ecx, dword [esp + 0x30]
or dword [ebp + 0x2c], ecx
xor edx, edx
cmp dword [esp + 0x54], 0
mov edi, esi
jne 0x587e41
mov eax, dword [esp + 0x40]
movzx ecx, ax
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 4]
movsx edi, word [eax + ecx*2]
test edi, edi
js 0x587e29
mov eax, dword [esp + 0x48]
mov ecx, edi
add ecx, ecx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
je 0x587e32
mov dword [esp + 0x2c], esi
cmp edi, 0xfffffffe
jne 0x587e3d
xor ecx, ecx
mov edi, esi
inc ecx
mov byte [esp + 0x13], cl
jmp 0x587e44
mov edi, dword [esp + 0x2c]
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0xb8]
mov eax, dword [eax + 0x2c]
and eax, 0x80030
cmp eax, 0x80000
jne 0x587e8d
inc dword [esi + 0x2c]
mov edi, ecx
mov eax, dword [esi + 0x2c]
mov byte [esp + 0x13], cl
mov dword [esp + 0x58], eax
mov dword [ebp + 0x24], eax
cmp dword [ebp], edx
je 0x587e83
push eax
push edx
push 0x47
push ebx
call fcn.0057b76b
add esp, 0x10
mov eax, dword [esi + 0x38]
dec eax
mov dword [esi + 0x38], eax
mov dword [ebp + 0x28], eax
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
cmp ax, word [edx + 0x34]
jae 0x587ee2
movzx ecx, ax
mov eax, dword [edx + 0x1c]
xor edx, edx
cmp byte [ecx + eax], dl
sete dl
cmp dword [esp + 0x30], edx
jne 0x587ee2
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x54], eax
mov al, byte [esp + 0x13]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x60]
mov byte [esp + 0x67], al
mov eax, dword [esp + 0x14]
movzx ecx, cx
movzx eax, al
mov byte [esp + 0x13], 0
mov dword [esp + 0x14], ecx
mov dword [esp + 0x60], eax
cmp dword [esp + 0xc4], 0
jle 0x587f0b
mov eax, dword [esp + 0x28]
test dword [eax + 0x2c], 0x100000
je 0x587f0b
push dword [esp + 0x18]
push 0x88
push ebx
call fcn.0057b752
add esp, 0xc
lea eax, [esp + 0x34]
push eax
push edi
push dword [esp + 0x38]
push ebp
push esi
call fcn.0053a138
add esp, 0x14
mov dword [esp + 0x4c], eax
cmp dword [esp + 0x34], 0
je 0x587f4e
cmp word [esp + 0x60], 0
je 0x587f4e
mov eax, dword [esp + 0x40]
movzx ecx, ax
add ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
push ecx
push eax
call fcn.005605e0
pop ecx
pop ecx
mov dword [esp + 0x50], eax
cmp dword [esp + 0x58], 0
je 0x587f5e
mov ecx, dword [ebp + 0x28]
mov dword [esp + 0x5c], ecx
jmp 0x587f65
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x54]
test eax, eax
je 0x587f7b
test byte [eax + 0xc], 0x28
jne 0x587f7b
xor ecx, ecx
mov dword [esp + 0x2c], ecx
jmp 0x587f84
xor ecx, ecx
inc ecx
mov dword [esp + 0x2c], ecx
xor ecx, ecx
mov edx, dword [esp + 0x44]
test edx, edx
je 0x587f98
test byte [edx + 0xc], 0x28
jne 0x587f98
mov dword [esp + 0x24], ecx
jmp 0x587f9f
xor edx, edx
inc edx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x40]
test eax, eax
jne 0x587fce
test dx, dx
jne 0x587fce
mov eax, dword [esp + 0x1c]
mov esi, ecx
movzx edi, ax
mov dword [esp + 0x1c], edi
mov al, byte [esp + 0x13]
test al, al
je 0x588087
mov dword [esp + 0x2c], ecx
jmp 0x58808e
xor esi, esi
movzx edi, dx
inc esi
mov dword [esp + 0x1c], edi
test eax, eax
je 0x587fb9
mov eax, dword [eax]
movzx edi, dx
add edi, dword [esp + 0x4c]
mov esi, dword [eax + 0x10]
mov eax, dword [esp + 0x14]
movzx ecx, ax
push ecx
push edi
push esi
push dword [esp + 0xc4]
mov dword [esp + 0x24], ecx
call fcn.0053ad2e
push dword [esp + 0x64]
push ebp
push ebx
call fcn.00593f81
mov eax, dword [esp + 0x70]
add esp, 0x1c
test byte [eax + 0xa], 0x80
jne 0x588035
push esi
call fcn.00562823
pop ecx
test eax, eax
je 0x588035
push dword [esp + 0x5c]
push edi
push 0x32
push ebx
call fcn.0057b76b
add esp, 0x10
cmp dword [esp + 0x34], 0
mov edi, dword [esp + 0x14]
je 0x588056
mov eax, dword [esp + 0x40]
movzx eax, ax
add eax, dword [esp + 0x34]
push eax
push edi
push esi
call fcn.0058d860
add esp, 0xc
add dword [esp + 0x1c], edi
push esi
call fcn.00565b08
pop ecx
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x588079
push dword [esp + 0x54]
push ebp
call fcn.0053e1ab
pop ecx
pop ecx
xor ecx, ecx
inc ecx
jmp 0x58807d
mov dword [esp + 0x2c], ecx
xor al, al
mov esi, ecx
mov byte [esp + 0x13], al
jmp 0x5880b0
cmp dword [esp + 0x58], 0
je 0x5880b0
movzx eax, dx
add eax, dword [esp + 0x4c]
push eax
push ecx
push 0x4b
push ebx
call fcn.0057b76b
xor eax, eax
add esp, 0x10
inc edi
mov dword [esp + 0x1c], edi
lea esi, [eax + 1]
mov al, byte [esp + 0x13]
push dword [esp + 0x34]
mov edi, dword [esp + 0x20]
mov ecx, edi
movzx eax, al
sub ecx, eax
push ecx
push dword [esp + 0x54]
push dword [esp + 0xc4]
call fcn.0053a458
mov eax, dword [esp + 0x38]
add esp, 0x10
movzx eax, word [eax + 0x32]
test ax, ax
je 0x5880e8
cmp edi, eax
je 0x58822d
mov eax, dword [esp + 0x58]
test eax, eax
je 0x588100
push eax
xor eax, eax
inc eax
push eax
push 0x47
push ebx
call fcn.0057b76b
add esp, 0x10
cmp dword [ebp + 0x34], 0
je 0x588150
mov eax, dword [esp + 0x40]
movzx eax, ax
push eax
push dword [esp + 0x50]
push dword [esp + 0x64]
push dword [ebp + 0x34]
push 0x40
push ebx
call fcn.0057b858
push dword [esp + 0xe8]
push dword [esp + 0xe8]
push dword [esp + 0x7c]
push dword [esp + 0xe8]
push dword [esp + 0xe8]
push dword [esp + 0xe4]
call fcn.005413c0
add esp, 0x30
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
lea eax, [eax + esi*2]
movzx esi, byte [ecx + eax*2 + 0x65702c]
mov eax, dword [esp + 0x28]
test dword [eax + 0x2c], 0x100000
je 0x5881ca
cmp esi, 0x17
jne 0x5881ca
mov eax, dword [esp + 0x48]
push 0xa
pop ecx
mov eax, dword [eax + 8]
movsx eax, word [eax]
add eax, 9
cdq
idiv ecx
push eax
push 0x7c
push ebx
call fcn.0057b752
add esp, 0xc
mov dword [esp + 0x20], eax
cmp dword [esp + 0x54], 0
jne 0x5881a6
cmp dword [esp + 0x44], 0
je 0x5881ca
xor eax, eax
inc eax
push eax
push ebx
call fcn.0057bb2b
mov eax, dword [esp + 0x28]
mov edx, dword [ebx + 0x6c]
push eax
push ebx
inc edx
call fcn.0058273c
add esp, 0x10
and dword [esp + 0x20], 0
mov dword [eax + 8], edx
push edi
push dword [esp + 0x50]
push dword [esp + 0x64]
push dword [esp + 0x24]
push esi
push ebx
call fcn.0057b858
mov eax, dword [esp + 0x70]
add esp, 0x18
test eax, eax
je 0x588231
mov eax, dword [ebx + 0x6c]
add eax, 2
push eax
push 0
push 9
push ebx
call fcn.0057b76b
mov ecx, dword [esp + 0x40]
mov eax, edi
sub eax, dword [esp + 0x3c]
push eax
push dword [esp + 0x60]
xor eax, eax
push dword [esp + 0x74]
inc eax
push dword [esp + 0x34]
cmp eax, edi
sbb eax, eax
and eax, 4
movzx eax, byte [eax + ecx + 0x65702e]
push eax
push ebx
call fcn.0057b858
add esp, 0x28
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
movzx esi, di
mov dword [esp + 0x2c], esi
test ecx, ecx
je 0x5882ff
mov eax, dword [ecx]
mov esi, dword [eax + 0x10]
mov eax, dword [esp + 0x60]
movzx edi, ax
mov eax, dword [esp + 0x40]
movzx eax, ax
add eax, dword [esp + 0x4c]
push edi
push eax
push esi
push dword [esp + 0xc4]
mov dword [esp + 0x24], eax
call fcn.0053ad2e
push dword [esp + 0x54]
push ebp
push ebx
call fcn.00593f81
mov eax, dword [esp + 0x60]
add esp, 0x1c
test byte [eax + 0xa], 0x80
jne 0x5882a8
push esi
call fcn.00562823
pop ecx
test eax, eax
je 0x5882a8
push dword [esp + 0x5c]
push dword [esp + 0x18]
push 0x32
push ebx
call fcn.0057b76b
add esp, 0x10
mov eax, dword [esp + 0x50]
test eax, eax
je 0x5882d1
push eax
push edi
push esi
call fcn.0058d860
mov eax, dword [esp + 0x5c]
push eax
push edi
push dword [esp + 0x28]
push dword [esp + 0xd0]
call fcn.0053a458
add esp, 0x1c
add dword [esp + 0x2c], edi
push esi
call fcn.00565b08
pop ecx
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x5882f1
push dword [esp + 0x44]
push ebp
call fcn.0053e1ab
pop ecx
pop ecx
jmp 0x5882f5
mov dword [esp + 0x24], ecx
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x40]
jmp 0x588325
cmp byte [esp + 0x67], 0
je 0x588325
test eax, eax
jne 0x588324
movzx eax, di
add eax, dword [esp + 0x4c]
push eax
push 0
push 0x4b
push ebx
call fcn.0057b76b
add esp, 0x10
and dword [esp + 0x24], 0
inc esi
cmp dword [esp + 0x34], 0
je 0x58833b
push dword [esp + 0x34]
push dword [esp + 0x40]
call fcn.00560462
pop ecx
pop ecx
mov eax, dword [esp + 0x50]
test eax, eax
je 0x58834f
push eax
push dword [esp + 0x40]
call fcn.00560462
pop ecx
pop ecx
mov eax, dword [ebx + 0x6c]
mov dword [ebp + 0x44], eax
test esi, esi
je 0x5883b2
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x588374
mov eax, dword [ebx + 0x6c]
add eax, 3
push eax
push ecx
push 0x11
push ebx
call fcn.0057b76b
add esp, 0x10
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
push esi
push dword [esp + 0x50]
push dword [esp + 0x64]
movzx eax, byte [eax + ecx*2 + str.___]
push dword [esp + 0x24]
push eax
push ebx
call fcn.0057b858
mov eax, dword [esp + 0x38]
add esp, 0x18
test eax, eax
je 0x5883b2
push eax
push ebx
call fcn.0058273c
pop ecx
pop ecx
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x5883fc
mov eax, dword [ebx + 0x6c]
add eax, 2
push eax
push ecx
push 0x10
push ebx
call fcn.0057b76b
movzx eax, byte [esp + 0x23]
mov ecx, dword [esp + 0x40]
add eax, esi
mov esi, dword [esp + 0x28]
push eax
push dword [esp + 0x60]
movzx eax, byte [esp + 0x2b]
push dword [esp + 0x74]
push esi
movzx eax, byte [eax + ecx*2 + str.___]
push eax
push ebx
call fcn.0057b858
add esp, 0x28
jmp 0x588400
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
test dword [eax + 0x2c], 0x40000
je 0x588421
movzx eax, di
push eax
movzx eax, di
push eax
push esi
push 0x7d
push ebx
call fcn.0057b786
add esp, 0x14
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0xc0]
test byte [edi + 0x2c], 0x40
je 0x588447
mov eax, 0x1020
test word [ecx + 0x28], ax
jne 0x588447
xor eax, eax
lea esi, [eax + 1]
jmp 0x588521
mov edx, dword [esp + 0x48]
mov eax, dword [edx + 0xc]
test byte [eax + 0x1c], 0x80
jne 0x58846a
push esi
push dword [esp + 0x3c]
push edx
push ecx
call fcn.0053a68c
add esp, 0x10
xor esi, esi
jmp 0x588521
mov ecx, dword [esp + 0x38]
xor esi, esi
cmp ecx, dword [esp + 0x18]
je 0x588529
push eax
call fcn.00572edd
mov esi, eax
mov dword [esp + 0x28], esi
movzx ecx, word [esi + 0x32]
push ecx
push dword [esp + 0xc0]
call fcn.00569724
movzx ecx, word [esi + 0x32]
add esp, 0xc
mov dword [esp + 0x14], eax
mov edx, ecx
xor eax, eax
and dword [esp + 0x20], eax
mov edi, eax
mov esi, eax
cmp word [esp + 0x20], cx
jae 0x5884ff
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 4]
movzx eax, word [eax + edi*2]
push eax
push dword [esp + 0x4c]
call fcn.005786d6
movsx ecx, ax
lea eax, [edi + esi]
push eax
push ecx
push dword [esp + 0x28]
push 0x5e
push ebx
call fcn.0057b786
movzx ecx, word [ebp + 0x32]
add esp, 0x1c
inc edi
cmp edi, ecx
jl 0x5884c1
mov ebp, dword [esp + 0xc8]
mov edx, ecx
mov esi, dword [esp + 0x20]
movzx eax, dx
push eax
push dword [esp + 0x18]
push dword [esp + 0x80]
push dword [esp + 0x44]
push 0x1c
push ebx
call fcn.0057b858
mov edi, dword [esp + 0x40]
add esp, 0x18
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x48]
cmp dword [ebp], 0
jne 0x588545
cmp dword [edx + 0x24], 0
je 0x588545
push dword [esp + 0x68]
push ecx
push dword [edx + 0x24]
call fcn.00593b22
add esp, 0xc
mov eax, 0x1000
test dword [edi + 0x2c], eax
je 0x588555
mov byte [ebp + 0x3d], 0xbb
jmp 0x588562
cmp dword [esp + 0x30], 0
sete al
add al, 0x26
mov byte [ebp + 0x3d], al
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov dword [ebp + 0x40], eax
inc ecx
mov al, byte [edi + 0x2e]
and al, cl
mov byte [ebp + 0x3e], al
test byte [edi + 0x2c], 0xf
jne 0x58857d
mov byte [ebp + 0x3f], cl
mov edi, dword [esp + 0xb8]
test esi, esi
je 0x588bed
and dword [esp + 0x48], 0
jmp 0x588bed
test ecx, 0x2000
je 0x588ba7
mov esi, dword [esp + 0xb8]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x20], edx
lea ecx, [esi + 0x28]
mov dword [esp + 0x58], edx
mov eax, dword [ecx]
lea edi, [esi + 0x2c]
mov dword [esp + 0x40], eax
inc eax
mov dword [ecx], eax
mov eax, dword [edi]
inc eax
mov dword [esp + 0x24], ecx
mov dword [edi], eax
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 0x38]
dec eax
mov dword [esp + 0x18], edx
mov dword [esi + 0x38], eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x6c]
mov esi, dword [eax + 0x10]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x50], esi
mov eax, dword [eax + 0x38]
mov eax, dword [eax]
mov dword [esp + 0x54], eax
mov eax, dword [eax + 0x18]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x5c]
mov dword [ebp + 0x40], eax
mov eax, dword [esp + 0xc0]
mov byte [ebp + 0x3d], 0x43
mov al, byte [eax + 0x2c]
cmp al, 1
jbe 0x5886f1
movzx eax, al
sub eax, dword [esp + 0xc4]
dec eax
imul ecx, eax, 0x48
push edx
mov dword [esp + 0x18], eax
add ecx, 0x50
push ecx
push dword [esp + 0x44]
call fcn.00560346
mov esi, eax
add esp, 0xc
mov dword [esp + 0x34], esi
test esi, esi
jne 0x588660
mov eax, dword [esp + 0xcc]
mov edx, dword [esp + 0xd0]
jmp 0x5890de
mov al, byte [esp + 0x14]
inc al
movzx eax, al
push 0x48
push dword [esp + 0x70]
mov dword [esi + 4], eax
mov dword [esi], eax
lea eax, [esi + 8]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0xcc]
add esp, 0xc
mov eax, dword [eax + 4]
add eax, 8
mov dword [esp + 0x44], eax
xor eax, eax
inc eax
cmp dword [esp + 0x14], eax
jl 0x5886e9
mov ebx, dword [esp + 0x14]
lea edi, [ebp + 0x9c]
mov ebp, dword [esp + 0x44]
add esi, 0x50
movzx eax, byte [edi]
imul eax, eax, 0x48
push 0x48
add eax, ebp
push eax
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
lea edi, [edi + 0x60]
add esi, 0x48
sub ebx, 1
jne 0x5886ab
mov eax, dword [esp + 0xb8]
mov ebp, dword [esp + 0xc8]
mov ebx, dword [esp + 0xbc]
lea edi, [eax + 0x2c]
add eax, 0x28
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0x50]
xor edx, edx
jmp 0x588703
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x24], ecx
mov eax, dword [eax + 4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xc0]
test byte [eax + 0x28], 0x10
jne 0x58876a
test byte [esi + 0x1c], 0x80
jne 0x58872d
inc dword [edi]
mov eax, dword [edi]
push eax
push edx
push 0x4b
push ebx
mov dword [esp + 0x3c], eax
call fcn.0057b76b
add esp, 0x10
jmp 0x588762
push esi
call fcn.00572edd
mov esi, eax
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 0x30], edx
lea ecx, [edx + 1]
mov dword [eax], ecx
movzx ecx, word [esi + 0x32]
push ecx
push edx
push 0x76
push ebx
call fcn.0057b76b
push esi
push dword [esp + 0xd0]
call fcn.00584c34
add esp, 0x1c
inc dword [edi]
mov eax, dword [edi]
mov dword [esp + 0x20], eax
push dword [esp + 0x5c]
push 0
push 0x47
push ebx
call fcn.0057b76b
mov ecx, dword [esp + 0x78]
add esp, 0x10
mov dword [esp + 0x74], eax
xor eax, eax
inc eax
cmp dword [ecx + 0xc], eax
jle 0x58882b
mov edx, dword [esp + 0x54]
xor ebx, ebx
mov edi, ebx
mov esi, ebx
mov eax, dword [ecx + 0x18]
add eax, esi
mov ecx, dword [eax]
cmp eax, edx
je 0x5887ed
mov ebp, 0x8006
test word [eax + 0xa], bp
jne 0x5887ed
mov ebp, 0x3fff
test word [eax + 0xc], bp
mov ebp, dword [esp + 0xb8]
je 0x5887ed
test dword [ecx + 4], 0x400000
jne 0x5887ed
push ebx
push ecx
push dword [esp + 0x44]
call fcn.005648df
push eax
push dword [esp + 0x28]
push ebp
call fcn.005625c7
mov edx, dword [esp + 0x6c]
add esp, 0x18
mov dword [esp + 0x18], eax
jmp 0x5887f1
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x68]
inc edi
add esi, 0x30
cmp edi, dword [ecx + 0xc]
jl 0x588799
mov ebp, dword [esp + 0xc8]
mov ebx, dword [esp + 0xbc]
test eax, eax
je 0x58882b
push eax
push 0
push 0x1002c
push dword [esp + 0xc4]
call fcn.0056da79
add esp, 0x10
mov dword [esp + 0x18], eax
xor ecx, ecx
push str.MULTI_INDEX_OR
inc ecx
push ecx
push dword [esp + 0xc0]
call fcn.00582490
mov ecx, dword [esp + 0x6c]
xor edi, edi
add esp, 0xc
mov dword [esp + 0x4c], edi
cmp dword [ecx + 0xc], edi
jle 0x588b12
imul eax, edi, 0x30
add eax, dword [ecx + 0x18]
mov ecx, dword [esp + 0x38]
cmp dword [eax + 0x14], ecx
je 0x588874
mov ecx, 0x400
test word [eax + 0xc], cx
je 0x588af7
xor ebp, ebp
push ebp
push dword [eax]
mov dword [esp + 0x1c], ebp
push dword [esp + 0x44]
call fcn.005648df
mov esi, eax
add esp, 0xc
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x70], esi
cmp byte [eax + 0x57], 0
je 0x5888a8
test esi, esi
je 0x588af7
push esi
push eax
jmp 0x588af0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x5888b5
mov dword [eax + 0xc], esi
mov esi, eax
lea eax, [edi + 1]
push eax
xor eax, eax
push str.INDEX__d
inc eax
push eax
push dword [esp + 0xc4]
call fcn.00582490
push dword [esp + 0x50]
xor eax, eax
push 0x20
push eax
push eax
push eax
push esi
push dword [esp + 0x5c]
push dword [esp + 0xe4]
call fcn.005869fa
mov esi, eax
add esp, 0x30
mov dword [esp + 0x44], esi
test esi, esi
je 0x588ae3
push 0
lea ecx, [esi + 0x2f8]
push ecx
push dword [esp + 0x3c]
push dword [esp + 0xc4]
call fcn.0058984d
mov eax, dword [esp + 0xd0]
add esp, 0x10
test byte [eax + 0x28], 0x10
jne 0x588a48
mov eax, dword [esp + 0x60]
mov esi, edi
push 0xffffffffffffffff
mov eax, dword [eax + 0xc]
dec eax
cmp edi, eax
pop eax
cmove esi, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x7c], esi
test byte [eax + 0x1c], 0x80
jne 0x588976
mov ebp, dword [esp + 0x20]
push ebp
push dword [esp + 0x3c]
push 0x87
push ebx
call fcn.0057b76b
push esi
push ebp
push 0
push dword [esp + 0x48]
push 0x2f
push ebx
call fcn.0057b858
add esp, 0x28
mov ebp, eax
jmp 0x588a44
push eax
call fcn.00572edd
mov dword [esp + 0x2c], eax
movzx edi, word [eax + 0x32]
push edi
push dword [esp + 0xc0]
call fcn.00569724
add esp, 0xc
mov dword [esp + 0x24], eax
xor ebp, ebp
test edi, edi
je 0x5889ce
mov esi, eax
mov eax, dword [esp + 0x28]
lea ecx, [esi + ebp]
push ecx
mov eax, dword [eax + 4]
movsx eax, word [eax + ebp*2]
push eax
push dword [esp + 0x40]
push dword [esp + 0x5c]
push ebx
call fcn.00562c0e
add esp, 0x14
inc ebp
cmp ebp, edi
jl 0x5889a0
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0x24]
test esi, esi
je 0x5889ed
push edi
push eax
push 0
push dword [esp + 0x38]
push 0x1d
push ebx
call fcn.0057b858
add esp, 0x18
mov dword [esp + 0x14], eax
test esi, esi
js 0x588a27
push dword [esp + 0x20]
mov ebp, dword [esp + 0x28]
push edi
push ebp
push 0x61
push ebx
call fcn.0057b786
push edi
push ebp
push dword [esp + 0x3c]
push dword [esp + 0x4c]
push 0x8a
push ebx
call fcn.0057b858
add esp, 0x2c
test esi, esi
je 0x588a2b
push 0x10
push ebx
call fcn.0057bb2b
pop ecx
pop ecx
jmp 0x588a2b
mov ebp, dword [esp + 0x24]
push edi
push ebp
push dword [esp + 0xc0]
call fcn.00573dd7
mov ebp, dword [esp + 0x20]
add esp, 0xc
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x44]
push dword [esp + 0x30]
push dword [esp + 0x60]
push 0xa
push ebx
call fcn.0057b76b
add esp, 0x10
test ebp, ebp
je 0x588a6e
push ebp
push ebx
call fcn.0058273c
pop ecx
pop ecx
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 8], ecx
test byte [esi + 0x30], 2
mov ecx, dword [esi + 0x348]
mov eax, dword [esp + 0x58]
push 1
pop edx
cmovne eax, edx
test dword [ecx + 0x2c], 0x200
mov dword [esp + 0x58], eax
je 0x588abb
test edi, edi
je 0x588a9c
mov eax, dword [esp + 0x1c]
cmp dword [ecx + 0x20], eax
jne 0x588abb
mov eax, dword [esp + 0x50]
test byte [eax + 0x1c], 0x80
je 0x588ab2
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x588abb
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x1c], eax
jmp 0x588ac0
and dword [esp + 0x1c], 0
test byte [esi + 0x30], dl
je 0x588acf
mov eax, dword [esp + 0xc0]
or dword [eax + 0x30], edx
push esi
call fcn.005890e9
push dword [esp + 0xbc]
call fcn.005824e6
pop ecx
pop ecx
mov eax, dword [esp + 0x70]
test eax, eax
je 0x588af7
push eax
push dword [esp + 0x40]
call fcn.0056485a
pop ecx
pop ecx
mov eax, dword [esp + 0x60]
inc edi
mov dword [esp + 0x4c], edi
mov ecx, eax
cmp edi, dword [eax + 0xc]
jl 0x588856
mov ebp, dword [esp + 0xc8]
mov edi, dword [esp + 0xb8]
push edi
call fcn.005824e6
mov eax, dword [esp + 0x20]
mov dword [ebp + 0x48], eax
pop ecx
test eax, eax
je 0x588b32
mov eax, dword [esp + 0x40]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x3c]
test eax, eax
je 0x588b4b
and dword [eax + 0xc], 0
push eax
push esi
call fcn.0056485a
pop ecx
pop ecx
push dword [esp + 0x74]
push ebx
call fcn.0058273c
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 4], ecx
push dword [ebp + 0xc]
push ebx
call fcn.00582757
push dword [esp + 0x40]
push ebx
call fcn.00584970
mov eax, dword [ebx + 0x6c]
xor ecx, ecx
mov dword [ebp + 0x44], eax
inc ecx
mov eax, dword [esp + 0xd8]
add esp, 0x18
cmp byte [eax + 0x2c], cl
jbe 0x588b92
push dword [esp + 0x34]
push esi
call fcn.00560283
pop ecx
pop ecx
cmp dword [esp + 0x58], 0
jne 0x588bed
push dword [esp + 0x54]
push ebp
call fcn.0053e1ab
pop ecx
pop ecx
jmp 0x588bed
mov eax, dword [esp + 0x6c]
test byte [eax + 0x28], 0x40
jne 0x587ae4
mov ecx, dword [esp + 0x30]
push esi
mov al, byte [ecx + 0x657328]
mov byte [ebp + 0x3d], al
mov eax, dword [esp + 0x3c]
push eax
mov dword [ebp + 0x40], eax
movzx eax, byte [ecx + 0x65732c]
push eax
push ebx
call fcn.0057b76b
add esp, 0x10
inc eax
mov dword [ebp + 0x44], eax
xor eax, eax
inc eax
mov byte [ebp + 0x3f], al
mov edi, dword [esp + 0xb8]
mov edx, dword [esp + 0xc0]
xor eax, eax
cmp dword [esp + 0x48], eax
sete al
inc eax
add edx, 0x1f0
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + 0x68]
xor eax, eax
mov dword [esp + 0x18], eax
mov esi, dword [ecx + 0x18]
mov ecx, dword [ecx + 0xc]
jmp 0x588cd3
xor ecx, ecx
test byte [esi + 0xa], 6
mov dword [esp + 0x14], ecx
jne 0x588ccb
mov ecx, dword [ebp + 0x58]
mov eax, dword [esi + 0x2c]
and ecx, dword [esi + 0x28]
and eax, dword [ebp + 0x5c]
or ecx, eax
je 0x588c52
mov eax, dword [esp + 0xc0]
or dword [eax + 0x30], 2
mov eax, dword [esp + 0x18]
jmp 0x588ccb
mov eax, dword [esp + 0x6c]
mov edi, dword [esi]
mov al, byte [eax + 0x24]
test al, 0x58
je 0x588c92
test byte [edi + 4], 3
je 0x588f06
test al, 8
je 0x588c79
xor eax, eax
inc eax
test byte [edi + 4], al
je 0x588f06
push dword [edi + 0x24]
push edx
call fcn.00589d6a
and eax, dword [ebp + 0x58]
and edx, dword [ebp + 0x5c]
or eax, edx
pop ecx
pop ecx
jne 0x588efd
mov eax, dword [esp + 0x24]
xor edx, edx
inc edx
cmp eax, edx
jne 0x588e6f
push dword [esp + 0x48]
push dword [ebp + 4]
push edi
call fcn.005646e9
add esp, 0xc
test eax, eax
jne 0x588edc
push 2
pop eax
mov dword [esp + 0x18], eax
mov edi, dword [esp + 0xb8]
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
dec ecx
add esi, 0x30
mov dword [esp + 0x20], ecx
test ecx, ecx
jg 0x588c21
mov dword [esp + 0x24], eax
test eax, eax
jg 0x588c0c
mov edx, dword [esp + 0x68]
mov esi, dword [edx + 0x14]
mov ebx, dword [edx + 0x18]
mov dword [esp + 0x14], esi
test esi, esi
jle 0x588e07
mov ebp, dword [esp + 0x38]
test byte [ebx + 0xa], 6
jne 0x588df0
movzx eax, word [ebx + 0xc]
test al, 0x82
push 0xb
pop edi
setne cl
bt ax, di
mov edi, dword [esp + 0xb8]
setb al
test al, cl
je 0x588df0
cmp dword [ebx + 0x14], ebp
jne 0x588df0
mov eax, dword [esp + 0x6c]
test byte [eax + 0x24], 0x58
jne 0x588df0
mov eax, dword [ebx]
push 0
push 0x83
push dword [esp + 0xd8]
mov dword [esp + 0x80], eax
push dword [esp + 0xd8]
push dword [ebx + 0x18]
push ebp
push edx
call fcn.00589ced
mov edx, eax
add esp, 0x1c
mov dword [esp + 0x70], edx
test edx, edx
je 0x588dec
test byte [edx + 0xa], 4
jne 0x588dec
xor ecx, ecx
inc ecx
test byte [edx + 0xc], cl
je 0x588da0
mov eax, dword [edx]
test dword [eax + 4], 0x1000
je 0x588da0
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], ecx
jg 0x588dec
mov esi, dword [edx]
lea edi, [esp + 0x80]
mov eax, dword [esp + 0x74]
push 0xd
pop ecx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 0xc]
mov edi, dword [esp + 0xb8]
push 0x10
push dword [esp + 0x7c]
mov dword [esp + 0x94], eax
lea eax, [esp + 0x88]
push eax
push edi
call fcn.00564a78
mov eax, dword [esp + 0x80]
add esp, 0x10
mov esi, dword [esp + 0x14]
push 4
pop ecx
or word [eax + 0xa], cx
mov edx, dword [esp + 0x68]
dec esi
add ebx, 0x30
mov dword [esp + 0x14], esi
test esi, esi
jg 0x588d05
mov ebp, dword [esp + 0xc8]
lea ebx, [ebp + 0x38]
mov eax, dword [ebx]
mov dword [esp + 0x14], eax
test eax, eax
je 0x58902e
movzx eax, byte [ebp + 0x3c]
imul ecx, eax, 0x48
mov eax, dword [esp + 0xc0]
mov eax, dword [eax + 4]
mov eax, dword [ecx + eax + 0x18]
mov dword [esp + 0x74], eax
test byte [eax + 0x1c], 0x80
jne 0x588f16
push 2
push edi
call fcn.00569724
mov edi, dword [esp + 0xc4]
mov dword [esp + 0x3c], eax
lea ecx, [eax + 1]
push ecx
push dword [ebp + 4]
push 0x87
push edi
call fcn.0057b76b
xor eax, eax
add esp, 0x18
inc eax
mov dword [esp + 0x1c], eax
jmp 0x588f87
cmp eax, 3
jl 0x588edf
mov eax, 0x200
test word [esi + 0xa], ax
je 0x588e9e
mov ecx, dword [ebp + 0x2c]
test ecx, ecx
je 0x588e9e
mov eax, ecx
and ecx, edx
shr eax, 1
or ecx, 0x10
push eax
push ecx
push ebx
call fcn.0057b752
add esp, 0xc
mov dword [esp + 0x14], eax
push 0x10
push dword [esp + 0x7c]
push edi
mov edi, dword [esp + 0xc4]
push edi
call fcn.00564a78
mov eax, dword [esp + 0x24]
add esp, 0x10
test eax, eax
je 0x588ecc
push eax
push ebx
call fcn.0058273c
pop ecx
pop ecx
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 8], ecx
push 4
pop eax
or word [esi + 0xa], ax
mov eax, dword [esp + 0x18]
jmp 0x588cc7
xor edx, edx
inc edx
mov eax, 0x1000
test word [esi + 0xa], ax
je 0x588e74
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x588cc0
push 3
jmp 0x588cbb
mov eax, dword [esp + 0x18]
jmp 0x588cc0
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0xb8]
jmp 0x588ccb
push eax
call fcn.00572edd
mov dword [esp + 0x74], eax
movzx esi, word [eax + 0x32]
mov dword [esp + 0x20], esi
lea ecx, [esi + 1]
push ecx
push edi
call fcn.00569724
mov edi, dword [esp + 0xc8]
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x34], eax
mov dword [esp + 0x20], ecx
test esi, esi
je 0x588f87
mov ebx, dword [esp + 0x74]
mov ebp, eax
lea eax, [ebp + 1]
add eax, ecx
push eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 4]
movsx eax, word [eax + ecx*2]
push eax
push dword [esp + 0x40]
push ebx
push edi
call fcn.00562c0e
mov ecx, dword [esp + 0x34]
add esp, 0x14
inc ecx
mov dword [esp + 0x20], ecx
cmp ecx, esi
jl 0x588f50
mov ebp, dword [esp + 0xc8]
lea ebx, [ebp + 0x38]
push dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
inc esi
push esi
push 0
push dword [eax]
push 0x1d
push edi
call fcn.0057b858
push dword [esp + 0x4c]
mov edi, eax
push dword [esp + 0x38]
push esi
push 0x61
push dword [esp + 0xe4]
call fcn.0057b786
push dword [esp + 0x48]
mov eax, dword [esp + 0x44]
push esi
push dword [esp + 0x68]
push dword [eax]
push 0x8a
push dword [esp + 0xfc]
call fcn.0057b858
mov eax, dword [esp + 0x58]
add esp, 0x44
push dword [esp + 0x1c]
push esi
mov esi, dword [esp + 0xc4]
push 0
push dword [eax + 4]
push 0xb7
push esi
call fcn.0057b858
push 0x10
push esi
call fcn.0057bb2b
push edi
push esi
call fcn.0058273c
mov ecx, dword [esi + 0x6c]
mov edi, dword [esp + 0xe0]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x44]
inc eax
push eax
push dword [esp + 0x60]
push edi
call fcn.00573dd7
add esp, 0x34
jmp 0x589035
mov esi, dword [esp + 0xbc]
cmp dword [ebp], 0
je 0x58905c
mov eax, dword [esi + 0x6c]
push dword [ebp]
mov dword [ebp + 0x1c], eax
xor eax, eax
inc eax
push eax
push 0x47
push esi
call fcn.0057b76b
add esp, 0x10
cmp dword [ebx], 0
je 0x589085
mov edi, dword [ebx]
jmp 0x589062
mov edi, dword [ebx]
test edi, edi
je 0x5890d8
push dword [edi + 8]
xor ebx, ebx
push ebx
push 0x4a
push esi
call fcn.0057b76b
mov eax, dword [esi + 0x6c]
add esp, 0x10
mov dword [edi + 0xc], eax
mov edi, dword [esp + 0xb8]
inc byte [edi + 0x1a]
jmp 0x589087
xor ebx, ebx
mov edx, dword [esp + 0x68]
mov esi, dword [edx + 0x18]
cmp dword [edx + 0x14], ebx
jle 0x5890d8
test byte [esi + 0xa], 6
jne 0x5890cf
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [ebp + 0x58]
and eax, dword [ebp + 0x5c]
or ecx, eax
jne 0x5890cf
mov eax, dword [esp + 0x6c]
test byte [eax + 0x24], 0x40
jne 0x5890cf
push 0x10
push dword [esp + 0x7c]
push dword [esi]
push edi
call fcn.00564a78
mov edx, dword [esp + 0x78]
add esp, 0x10
push 4
pop eax
or word [esi + 0xa], ax
inc ebx
add esi, 0x30
cmp ebx, dword [edx + 0x14]
jl 0x589093
mov eax, dword [ebp + 0x58]
mov edx, dword [ebp + 0x5c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa4
ret