Function at 0x5b237e
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff930
push ebx
push esi
push edi
mov esi, dword [ebp + 8]
test esi, esi
jne 0x5b2399
or eax, 0xffffffff
jmp 0x5b3d5c
mov edx, dword [esi]
mov dword [ebp - 0x34], edx
lea ecx, [esi + 0x50]
push ecx
push 0x4bbecb
mov eax, dword [ebp - 0x34]
push eax
call fcn.0058763a
add esp, 0xc
lea edx, [esi + 0x48]
push 8
push 0x4bbed5
push edx
call fcn.005f995e
add esp, 0xc
test eax, eax
jne 0x5b23d3
mov dword [ebp - 0x24], 1
jmp 0x5b23d8
xor ecx, ecx
mov dword [ebp - 0x24], ecx
mov eax, dword [0x4d3b7c]
push eax
call fcn.006055fe
call fcn.005b05f6
mov dword [esi + 8], 3
mov edx, dword [ebp - 0x34]
cmp edx, dword [0x4d7364]
jne 0x5b23fe
or dword [esi + 8], 4
mov ecx, dword [0x4d6e9c]
lea eax, [esi + 0x50]
push ecx
push 0x4d6d98
push eax
call fcn.005f984a
add esp, 0xc
test eax, eax
jne 0x5b242e
mov edx, dword [esi]
cmp edx, dword [0x4d7364]
je 0x5b242e
mov dword [esi + 0x3f5], 1
xor ecx, ecx
mov dword [ebp - 0xc], ecx
lea eax, [esi + 0x401]
push eax
lea edx, [esi + 0x50]
push edx
call fcn.005b51d6
add esp, 8
push 0x4bbad3
lea ecx, [esi + 0x50]
push ecx
call fcn.005fb37e
add esp, 8
mov dword [ebp - 0x80], eax
test eax, eax
jne 0x5b2465
mov dword [ebp - 0xc], 1
cmp dword [ebp - 0xc], 0
jne 0x5b248e
mov edx, dword [ebp - 0x80]
push edx
push 0x40
push 1
lea ecx, [ebp - 0x5c8]
push ecx
call fcn.005fb5da
add esp, 0x10
cmp eax, 0x40
je 0x5b248e
mov dword [ebp - 0xc], 1
cmp dword [ebp - 0xc], 0
jne 0x5b24a6
cmp word [ebp - 0x5c8], 0x5a4d
je 0x5b24a6
mov dword [ebp - 0xc], 2
cmp dword [ebp - 0xc], 0
jne 0x5b24cc
push 0
mov eax, dword [ebp - 0x58c]
push eax
mov edx, dword [ebp - 0x80]
push edx
call fcn.005fb66a
add esp, 0xc
test eax, eax
je 0x5b24cc
mov dword [ebp - 0xc], 1
cmp dword [ebp - 0xc], 0
jne 0x5b24f2
mov ecx, dword [ebp - 0x80]
push ecx
push 4
push 1
lea eax, [ebp - 0x40]
push eax
call fcn.005fb5da
add esp, 0x10
cmp eax, 4
je 0x5b24f2
mov dword [ebp - 0xc], 1
cmp dword [ebp - 0xc], 0
jne 0x5b2508
cmp dword [ebp - 0x40], 0x4550
je 0x5b2508
mov dword [ebp - 0xc], 2
cmp dword [ebp - 0xc], 0
jne 0x5b2531
mov edx, dword [ebp - 0x80]
push edx
push 0x14
push 1
lea ecx, [ebp - 0x5dc]
push ecx
call fcn.005fb5da
add esp, 0x10
cmp eax, 0x14
je 0x5b2531
mov dword [ebp - 0xc], 1
cmp dword [ebp - 0xc], 0
jne 0x5b2549
cmp word [ebp - 0x5dc], 0x14c
je 0x5b2549
mov dword [ebp - 0xc], 2
cmp dword [ebp - 0xc], 0
jne 0x5b255f
test byte [ebp - 0x5ca], 2
jne 0x5b255f
mov dword [ebp - 0xc], 2
cmp dword [ebp - 0xc], 0
jne 0x5b258e
cmp word [ebp - 0x5cc], 0xe0
je 0x5b258e
push 0xe0
movzx eax, word [ebp - 0x5cc]
push eax
push 0x4bbede
push 0xffffffffffffffff
push 0
call fcn.005b0616
add esp, 0x14
cmp dword [ebp - 0xc], 0
jne 0x5b263f
cmp word [ebp - 0x5cc], 0xe0
jae 0x5b25ea
push 0xe0
push 0
lea edx, [ebp - 0x6bc]
push edx
call fcn.005f95aa
add esp, 0xc
mov ecx, dword [ebp - 0x80]
lea edx, [ebp - 0x6bc]
push ecx
movzx eax, word [ebp - 0x5cc]
push eax
push 1
push edx
call fcn.005fb5da
add esp, 0x10
movzx ecx, word [ebp - 0x5cc]
cmp eax, ecx
je 0x5b263f
mov dword [ebp - 0xc], 1
jmp 0x5b263f
mov eax, dword [ebp - 0x80]
push eax
push 0xe0
push 1
lea edx, [ebp - 0x6bc]
push edx
call fcn.005fb5da
add esp, 0x10
cmp eax, 0xe0
je 0x5b2612
mov dword [ebp - 0xc], 1
cmp dword [ebp - 0xc], 0
jne 0x5b263f
cmp word [ebp - 0x5cc], 0xe0
jbe 0x5b263f
push 1
movzx ecx, word [ebp - 0x5cc]
sub ecx, 0xe0
push ecx
mov eax, dword [ebp - 0x80]
push eax
call fcn.005fb66a
add esp, 0xc
cmp dword [ebp - 0xc], 0
jne 0x5b2657
cmp word [ebp - 0x6bc], 0x10b
je 0x5b2657
mov dword [ebp - 0xc], 2
cmp dword [ebp - 0xc], 0
jne 0x5b2684
movzx edx, word [ebp - 0x5cc]
add edx, 0x80
mov ecx, dword [ebp - 0x660]
shl ecx, 3
add ecx, 0xe0
cmp edx, ecx
je 0x5b2684
mov dword [ebp - 0xc], 2
cmp dword [ebp - 0xc], 0
jne 0x5b26ae
cmp dword [ebp - 0x69c], 0x1000
jae 0x5b26ae
mov eax, dword [ebp - 0x69c]
push eax
push 0x4bbf2a
push 0xffffffffffffffff
push 0
call fcn.005b0616
add esp, 0x10
cmp dword [ebp - 0xc], 0
jne 0x5b27c1
mov edx, dword [ebp - 0x6a8]
add edx, dword [ebp - 0x34]
mov dword [esi + 0xc], edx
mov ecx, dword [esi + 0xc]
add ecx, dword [ebp - 0x6b8]
add ecx, 0xfff
and ecx, 0xfffff000
sub ecx, dword [esi + 0xc]
mov dword [esi + 0x10], ecx
cmp dword [ebp - 0x6ac], 0
jne 0x5b26ef
xor eax, eax
mov dword [esi + 0x28], eax
jmp 0x5b270e
mov edx, dword [ebp - 0x6ac]
add edx, dword [ebp - 0x34]
mov dword [esi + 0x28], edx
push 0x4bbf71
push 0x32
mov ecx, dword [esi + 0x28]
push ecx
call fcn.005ba30e
add esp, 0xc
movzx eax, word [ebp - 0x5da]
mov dword [esi + 0x154], eax
cmp dword [esi + 0x154], 0
jle 0x5b274a
cmp dword [esi + 0x154], 0x2000
jge 0x5b274a
mov edx, dword [esi + 0x154]
shl edx, 3
lea edx, [edx + edx*4]
push edx
push 0
call fcn.006050fa
mov dword [esi + 0x158], eax
cmp dword [esi + 0x158], 0
je 0x5b279d
mov ecx, dword [ebp - 0x80]
push ecx
mov eax, dword [esi + 0x154]
shl eax, 3
lea eax, [eax + eax*4]
push eax
push 1
mov edx, dword [esi + 0x158]
push edx
call fcn.005fb5da
add esp, 0x10
mov dword [ebp - 4], eax
mov ecx, dword [esi + 0x154]
shl ecx, 3
lea ecx, [ecx + ecx*4]
cmp ecx, dword [ebp - 4]
je 0x5b279d
mov eax, dword [esi + 0x158]
push eax
call fcn.00605100
xor edx, edx
mov dword [esi + 0x158], edx
mov ecx, dword [ebp - 0x680]
mov dword [esi + 0x15c], ecx
mov eax, dword [ebp - 0x6a4]
add eax, dword [ebp - 0x34]
mov dword [esi + 0x2c], eax
mov edx, dword [ebp - 0x6a0]
mov dword [esi + 0x160], edx
cmp dword [ebp - 0xc], 0
jne 0x5b28f3
cmp dword [ebp - 0x6a8], 0
je 0x5b28f3
cmp dword [esi + 0x28], 0
jne 0x5b27ed
mov ecx, dword [ebp - 0x34]
cmp ecx, dword [0x4d7364]
jne 0x5b28f3
xor eax, eax
mov dword [ebp - 4], eax
mov edx, dword [esi + 0x158]
lea ecx, [edx + 0xc]
mov dword [ebp - 0x84], ecx
jmp 0x5b281d
mov eax, dword [ebp - 0x84]
mov edx, dword [eax]
cmp edx, dword [ebp - 0x6a8]
je 0x5b2828
inc dword [ebp - 4]
add dword [ebp - 0x84], 0x28
mov ecx, dword [ebp - 4]
cmp ecx, dword [esi + 0x154]
jl 0x5b2803
mov eax, dword [ebp - 4]
cmp eax, dword [esi + 0x154]
jge 0x5b28f3
mov edx, dword [ebp - 4]
lea edx, [edx + edx*4]
mov ecx, dword [esi + 0x158]
mov eax, dword [ecx + edx*8 + 8]
cmp eax, dword [esi + 0x10]
jbe 0x5b28f3
mov edx, dword [ebp - 0x6b8]
lea ecx, [ebp - 0x288]
push edx
push 0x4bbf84
push ecx
call fcn.005fcc36
add esp, 0xc
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
lea eax, [eax + eax*4]
mov edx, dword [esi + 0x158]
cmp byte [edx + eax*8], 0
jne 0x5b28a2
mov ecx, dword [esi]
lea eax, [ebp - 0x288]
add ecx, dword [ebp - 0x6a8]
push ecx
push 0x4bbfc1
add eax, dword [ebp - 8]
push eax
call fcn.005fcc36
add esp, 0xc
jmp 0x5b28cb
mov edx, dword [ebp - 4]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [esi + 0x158]
push edx
push 8
push 0x4bbfc9
lea ecx, [ebp - 0x288]
add ecx, dword [ebp - 8]
push ecx
call fcn.005fcc36
add esp, 0x10
lea eax, [ebp - 0x288]
push eax
push 0xffffffffffffffff
mov edx, dword [esi + 0xc]
push edx
call fcn.005b0616
add esp, 0xc
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 8]
mov dword [esi + 0x10], edx
cmp dword [ebp - 0xc], 0
jne 0x5b2a5a
mov ecx, dword [esi + 0xc]
cmp ecx, dword [ebp - 0x34]
jne 0x5b2a5a
cmp dword [esi + 0x10], 0
jne 0x5b2a5a
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x5b2a4b
mov edx, dword [ebp - 4]
lea edx, [edx + edx*4]
mov ecx, dword [esi + 0x158]
mov eax, dword [ecx + edx*8 + 0xc]
cmp eax, dword [ebp - 0x6ac]
ja 0x5b2a48
mov edx, dword [ebp - 4]
lea edx, [edx + edx*4]
mov ecx, dword [esi + 0x158]
mov eax, dword [ecx + edx*8 + 0xc]
mov edx, dword [ebp - 4]
lea edx, [edx + edx*4]
mov ecx, dword [esi + 0x158]
add eax, dword [ecx + edx*8 + 8]
cmp eax, dword [ebp - 0x6ac]
jbe 0x5b2a48
mov eax, dword [ebp - 4]
lea eax, [eax + eax*4]
mov edx, dword [esi + 0x158]
test byte [edx + eax*8 + 0x24], 0x20
je 0x5b2a48
mov ecx, dword [ebp - 4]
mov eax, dword [esi + 0x158]
lea ecx, [ecx + ecx*4]
mov edx, dword [eax + ecx*8 + 0xc]
add edx, 0xfff
and edx, 0xfffff000
add edx, dword [ebp - 0x34]
mov dword [esi + 0xc], edx
mov ecx, dword [ebp - 4]
mov eax, dword [esi + 0x158]
lea ecx, [ecx + ecx*4]
mov edx, dword [eax + ecx*8 + 0x10]
lea ecx, [ebp - 0x288]
add edx, 0xfff
and edx, 0xfffff000
mov dword [esi + 0x10], edx
push 0x4bbfd0
push ecx
call fcn.005fcc36
add esp, 8
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
lea eax, [eax + eax*4]
mov edx, dword [esi + 0x158]
cmp byte [edx + eax*8], 0
jne 0x5b2a08
mov ecx, dword [esi]
lea eax, [ebp - 0x288]
add ecx, dword [ebp - 0x6a8]
push ecx
push 0x4bbfc1
add eax, dword [ebp - 8]
push eax
call fcn.005fcc36
add esp, 0xc
jmp 0x5b2a31
mov edx, dword [ebp - 4]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [esi + 0x158]
push edx
push 8
push 0x4bbfc9
lea ecx, [ebp - 0x288]
add ecx, dword [ebp - 8]
push ecx
call fcn.005fcc36
add esp, 0x10
lea eax, [ebp - 0x288]
push eax
push 0xffffffffffffffff
mov edx, dword [esi + 0xc]
push edx
call fcn.005b0616
add esp, 0xc
jmp 0x5b2a5a
inc dword [ebp - 4]
mov ecx, dword [ebp - 4]
cmp ecx, dword [esi + 0x154]
jl 0x5b291d
cmp dword [ebp - 0xc], 0
jne 0x5b2b42
cmp dword [esi + 0x158], 0
je 0x5b2b42
xor eax, eax
mov dword [ebp - 0x3c], eax
xor edx, edx
mov dword [ebp - 4], edx
jmp 0x5b2b27
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 0xc]
cmp edx, dword [ebp - 0x6a4]
jb 0x5b2b24
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 0x24]
and edx, 0xe0000020
cmp edx, 0xc0000000
jne 0x5b2b24
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
test byte [eax + ecx*8 + 0x24], 0xc0
je 0x5b2b24
push 8
push 0x4bc006
mov edx, dword [ebp - 4]
shl edx, 3
lea edx, [edx + edx*4]
add edx, dword [esi + 0x158]
push edx
call fcn.005f995e
add esp, 0xc
test eax, eax
jne 0x5b2b08
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 0xc]
add edx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], edx
jmp 0x5b2b36
cmp dword [ebp - 0x3c], 0
jne 0x5b2b24
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 0xc]
add edx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], edx
inc dword [ebp - 4]
mov ecx, dword [ebp - 4]
cmp ecx, dword [esi + 0x154]
jl 0x5b2a80
cmp dword [ebp - 0x3c], 0
je 0x5b2b42
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0x2c], eax
cmp dword [ebp - 0xc], 0
jne 0x5b2f8f
mov edx, dword [ebp - 0x65c]
mov dword [ebp - 0x44], edx
mov ecx, dword [ebp - 0x658]
mov dword [ebp - 0x38], ecx
cmp dword [ebp - 0x38], 0
jne 0x5b2b6b
xor eax, eax
mov dword [ebp - 0x74], eax
jmp 0x5b2b89
mov edx, dword [ebp - 0x38]
add edx, 4
push edx
push 0
call fcn.006050fa
mov dword [ebp - 0x74], eax
cmp dword [ebp - 0x74], 0
jne 0x5b2b89
mov dword [ebp - 0xc], 3
cmp dword [ebp - 0x74], 0
je 0x5b2f80
push 3
mov ecx, dword [ebp - 0x38]
push ecx
mov eax, dword [ebp - 0x34]
add eax, dword [ebp - 0x44]
push eax
mov edx, dword [ebp - 0x74]
push edx
call fcn.005b7316
add esp, 0x10
cmp eax, dword [ebp - 0x38]
je 0x5b2bbd
mov dword [ebp - 0xc], 2
jmp 0x5b2c4d
mov ecx, dword [ebp - 0x34]
add ecx, dword [ebp - 0x44]
mov dword [esi + 0x38], ecx
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x3c], eax
mov edx, dword [ebp - 0x74]
mov ecx, dword [edx + 0x1c]
sub ecx, dword [ebp - 0x44]
mov dword [ebp - 0x50], ecx
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 0x20]
sub edx, dword [ebp - 0x44]
mov dword [ebp - 0x54], edx
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x24]
sub eax, dword [ebp - 0x44]
mov dword [ebp - 0x58], eax
mov edx, dword [ebp - 0x74]
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x28], ecx
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 0x14]
mov dword [ebp - 0x2c], edx
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x2c]
shl edx, 2
add edx, dword [ebp - 0x50]
cmp edx, dword [ebp - 0x38]
jae 0x5b2c34
mov ecx, dword [ebp - 0x30]
shl ecx, 2
add ecx, dword [ebp - 0x54]
cmp ecx, dword [ebp - 0x38]
jae 0x5b2c34
mov eax, dword [ebp - 0x30]
add eax, eax
add eax, dword [ebp - 0x58]
cmp eax, dword [ebp - 0x38]
jb 0x5b2c4d
push 0x4bc00c
push 0xffffffffffffffff
push 0
call fcn.005b0616
add esp, 0xc
xor edx, edx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], edx
cmp dword [ebp - 0xc], 0
jne 0x5b2f80
cmp dword [ebp - 0x2c], 0
jbe 0x5b2c70
mov eax, dword [ebp - 0x2c]
shl eax, 2
push eax
push 0
call fcn.006050fa
mov dword [ebp - 0x14], eax
jmp 0x5b2c75
xor ecx, ecx
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0
je 0x5b2cd8
xor eax, eax
mov dword [ebp - 4], eax
mov edx, dword [ebp - 0x14]
mov ecx, edx
mov dword [ebp - 0x84], ecx
jmp 0x5b2ca2
mov eax, dword [ebp - 0x84]
mov edx, dword [ebp - 0x30]
mov dword [eax], edx
inc dword [ebp - 4]
add dword [ebp - 0x84], 4
mov ecx, dword [ebp - 4]
cmp ecx, dword [ebp - 0x2c]
jb 0x5b2c8d
xor ebx, ebx
cmp ebx, dword [ebp - 0x30]
jae 0x5b2cd8
mov eax, dword [ebp - 0x74]
mov edx, dword [ebp - 0x58]
lea ecx, [eax + edx]
movzx eax, word [ecx + ebx*2]
mov dword [ebp - 4], eax
mov edx, dword [ebp - 4]
cmp edx, dword [ebp - 0x2c]
jae 0x5b2cd2
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov dword [ecx + eax*4], ebx
inc ebx
cmp ebx, dword [ebp - 0x30]
jb 0x5b2cb1
lea edx, [ebp - 0x588]
push edx
lea ecx, [ebp - 0x388]
push ecx
push 0
push 0
lea eax, [esi + 0x50]
push eax
call fcn.005fb1c6
add esp, 0x14
lea edx, [ebp - 0x588]
push edx
lea ecx, [ebp - 0x388]
push ecx
call fcn.005f964e
add esp, 8
mov edi, 0x10000
lea eax, [ebp - 0x288]
push eax
push 0x81
push edi
call fcn.005ba9ca
add esp, 0xc
mov ebx, eax
test ebx, ebx
jne 0x5b2d30
xor edi, edi
jmp 0x5b2d58
lea eax, [ebp - 0x388]
push eax
lea edx, [ebp - 0x288]
push edx
call fcn.005f98c6
add esp, 8
test eax, eax
je 0x5b2d58
add edi, 0x10000
cmp edi, 0x10000000
jbe 0x5b2d11
xor ecx, ecx
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 0x14]
mov edx, eax
mov dword [ebp - 0x84], edx
jmp 0x5b2f65
mov ecx, dword [ebp - 0x74]
mov eax, dword [ebp - 0x50]
lea edx, [ecx + eax]
mov ecx, dword [ebp - 4]
mov eax, dword [edx + ecx*4]
sub eax, dword [ebp - 0x44]
mov dword [ebp - 0x3c], eax
mov edx, dword [ebp - 0x3c]
cmp edx, dword [ebp - 0x38]
jb 0x5b2f5b
cmp dword [ebp - 0x14], 0
je 0x5b2d9e
mov ecx, dword [ebp - 0x84]
mov ebx, dword [ecx]
jmp 0x5b2dbe
xor ebx, ebx
cmp ebx, dword [ebp - 0x30]
jae 0x5b2dbe
mov eax, dword [ebp - 0x74]
mov edx, dword [ebp - 0x58]
lea ecx, [eax + edx]
mov ax, word [ecx + ebx*2]
cmp ax, word [ebp - 4]
je 0x5b2dbe
inc ebx
cmp ebx, dword [ebp - 0x30]
jb 0x5b2da5
cmp ebx, dword [ebp - 0x30]
jae 0x5b2eab
mov edx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x54]
lea eax, [edx + ecx]
cmp dword [eax + ebx*4], 0
je 0x5b2eab
mov edx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x54]
lea eax, [edx + ecx]
mov eax, dword [eax + ebx*4]
sub eax, dword [ebp - 0x44]
cmp eax, dword [ebp - 0x38]
jb 0x5b2e01
mov dword [ebp - 0xc], 2
mov byte [ebp - 0x288], 0
jmp 0x5b2f40
push 0xff
mov edx, dword [ebp - 0x74]
add edx, eax
push edx
lea ecx, [ebp - 0x288]
push ecx
call fcn.005f990e
add esp, 0xc
mov byte [ebp - 0x189], 0
cmp dword [ebp - 0x24], 0
je 0x5b2f40
lea eax, [ebp - 0x288]
mov edx, 0x4bc03b
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x5b2e63
test cl, cl
je 0x5b2e53
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x5b2e63
add eax, 2
add edx, 2
test cl, cl
jne 0x5b2e37
jne 0x5b2e63
mov eax, dword [ebp - 0x3c]
add eax, dword [ebp - 0x44]
add eax, dword [ebp - 0x34]
mov dword [0x4d77d4], eax
lea eax, [ebp - 0x288]
mov edx, 0x4bc046
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x5b2f40
test cl, cl
je 0x5b2e92
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x5b2f40
add eax, 2
add edx, 2
test cl, cl
jne 0x5b2e6e
jne 0x5b2f40
mov eax, dword [ebp - 0x3c]
add eax, dword [ebp - 0x44]
add eax, dword [ebp - 0x34]
mov dword [0x4d77d8], eax
jmp 0x5b2f40
mov edx, dword [ebp - 4]
lea ecx, [ebp - 0x288]
add edx, dword [ebp - 0x28]
push edx
push 0x4bc052
push ecx
call fcn.005fcc36
add esp, 0xc
mov dword [ebp - 8], eax
test edi, edi
je 0x5b2f40
lea eax, [ebp - 0x287]
add eax, dword [ebp - 8]
push eax
push 0x82
mov edx, dword [ebp - 4]
add edx, edi
add edx, dword [ebp - 0x28]
push edx
call fcn.005ba9ca
add esp, 0xc
test eax, eax
jle 0x5b2f40
cmp dword [0x4d6eb4], 0
je 0x5b2f07
mov ecx, dword [ebp - 8]
mov byte [ebp + ecx - 0x288], 0x5f
jmp 0x5b2f39
lea eax, [ebp - 0x287]
add eax, dword [ebp - 8]
push esi
push edi
mov edi, eax
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea esi, [ebp - 0x288]
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
mov byte [ebp - 0x189], 0
lea eax, [ebp - 0x288]
push eax
push 0x32
mov edx, dword [ebp - 0x3c]
add edx, dword [ebp - 0x44]
add edx, dword [ebp - 0x34]
push edx
call fcn.005ba30e
add esp, 0xc
inc dword [ebp - 4]
add dword [ebp - 0x84], 4
mov ecx, dword [ebp - 4]
cmp ecx, dword [ebp - 0x2c]
jb 0x5b2d6d
cmp dword [ebp - 0x14], 0
je 0x5b2f80
mov eax, dword [ebp - 0x14]
push eax
call fcn.00605100
cmp dword [ebp - 0x74], 0
je 0x5b2f8f
mov edx, dword [ebp - 0x74]
push edx
call fcn.00605100
cmp dword [ebp - 0xc], 0
jne 0x5b3648
cmp dword [esi + 0x158], 0
je 0x5b3648
mov ecx, dword [ebp - 0x654]
xor edx, edx
mov dword [ebp - 0x44], ecx
mov eax, dword [ebp - 0x650]
mov dword [ebp - 0x38], eax
mov dword [ebp - 4], edx
mov ecx, dword [esi + 0x158]
lea eax, [ecx + 0xc]
mov dword [ebp - 0x84], eax
jmp 0x5b2ffb
mov edx, dword [ebp - 0x84]
mov ecx, dword [edx]
cmp ecx, dword [ebp - 0x44]
ja 0x5b2ff1
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x84]
mov edx, dword [eax]
add edx, dword [ecx + 4]
cmp edx, dword [ebp - 0x44]
ja 0x5b3006
inc dword [ebp - 4]
add dword [ebp - 0x84], 0x28
mov eax, dword [ebp - 4]
cmp eax, dword [esi + 0x154]
jl 0x5b2fce
cmp dword [ebp - 0xc], 0
jne 0x5b301d
cmp dword [ebp - 0x38], 0
je 0x5b301d
mov edx, dword [ebp - 4]
cmp edx, dword [esi + 0x154]
jl 0x5b3029
xor ecx, ecx
mov dword [ebp - 0x5c], ecx
xor eax, eax
mov dword [ebp - 0x78], eax
jmp 0x5b3078
mov edx, dword [ebp - 4]
lea edx, [edx + edx*4]
mov ecx, dword [esi + 0x158]
mov eax, dword [ecx + edx*8 + 0xc]
mov dword [ebp - 0x48], eax
mov edx, dword [ebp - 4]
lea edx, [edx + edx*4]
mov ecx, dword [esi + 0x158]
mov eax, dword [ecx + edx*8 + 0x10]
mov dword [ebp - 0x5c], eax
mov edx, dword [ebp - 0x5c]
cmp edx, dword [ebp - 0x38]
jae 0x5b305d
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x5c], ecx
mov eax, dword [ebp - 0x5c]
push eax
push 0
call fcn.006050fa
mov dword [ebp - 0x78], eax
cmp dword [ebp - 0x78], 0
jne 0x5b3078
mov dword [ebp - 0xc], 3
cmp dword [ebp - 0x78], 0
je 0x5b30c4
mov edx, dword [ebp - 0x48]
add edx, dword [ebp - 0x34]
mov dword [esi + 0x34], edx
push 0
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 0x14]
push edx
mov ecx, dword [ebp - 0x80]
push ecx
call fcn.005fb66a
add esp, 0xc
mov eax, dword [ebp - 0x80]
push eax
mov edx, dword [ebp - 0x5c]
push edx
push 1
mov ecx, dword [ebp - 0x78]
push ecx
call fcn.005fb5da
add esp, 0x10
cmp eax, dword [ebp - 0x5c]
jae 0x5b30c4
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x78], 0
je 0x5b3639
cmp dword [ebp - 0xc], 0
jne 0x5b3639
xor eax, eax
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x34]
add edx, dword [ebp - 0x44]
mov dword [esi + 0x30], edx
xor ecx, ecx
mov dword [ebp - 4], ecx
jmp 0x5b3627
push 3
push 0x14
mov eax, dword [ebp - 0x34]
add eax, dword [ebp - 0x44]
add eax, dword [ebp - 4]
push eax
lea edx, [ebp - 0x6d0]
push edx
call fcn.005b7316
add esp, 0x10
test eax, eax
jne 0x5b311d
mov dword [ebp - 0xc], 2
jmp 0x5b3639
cmp dword [ebp - 0x6c4], 0
je 0x5b3639
push 3
push 0x204
mov ecx, dword [ebp - 0x34]
add ecx, dword [ebp - 0x6c4]
push ecx
lea eax, [ebp - 0x288]
push eax
call fcn.005b7316
add esp, 0x10
test eax, eax
jne 0x5b319c
mov edx, dword [ebp - 0x34]
add edx, dword [ebp - 0x6c4]
and edx, 0xfff
mov eax, 0x1000
sub eax, edx
cmp eax, 0x204
jbe 0x5b3170
mov eax, 0x204
push 3
push eax
mov edx, dword [ebp - 0x34]
add edx, dword [ebp - 0x6c4]
push edx
lea ecx, [ebp - 0x288]
push ecx
call fcn.005b7316
add esp, 0x10
test eax, eax
jne 0x5b319c
mov dword [ebp - 0xc], 2
jmp 0x5b3639
lea eax, [ebp - 0x588]
push eax
lea edx, [ebp - 0x388]
push edx
push 0
push 0
lea ecx, [ebp - 0x288]
push ecx
call fcn.005fb1c6
add esp, 0x14
cmp dword [ebp - 0x6d0], 0
je 0x5b31e0
mov eax, dword [ebp - 0x6d0]
sub eax, dword [ebp - 0x48]
mov dword [ebp - 0x60], eax
mov edx, dword [ebp - 0x6c0]
sub edx, dword [ebp - 0x48]
mov dword [ebp - 0x64], edx
jmp 0x5b31f2
mov ecx, dword [ebp - 0x6c0]
sub ecx, dword [ebp - 0x48]
mov dword [ebp - 0x60], ecx
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x64], eax
xor edx, edx
mov ecx, dword [0x4d7218]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x7c], ecx
cmp dword [ebp - 0x7c], 0
je 0x5b3243
xor ebx, ebx
jmp 0x5b322e
push 8
lea eax, [ebp - 0x388]
push eax
mov edx, dword [ebp - 0x7c]
add edx, 0x48
push edx
call fcn.005f995e
add esp, 0xc
test eax, eax
je 0x5b3236
inc ebx
add dword [ebp - 0x7c], 0x465
cmp ebx, dword [0x4d7200]
jb 0x5b320a
cmp ebx, dword [0x4d7200]
jb 0x5b3243
xor ecx, ecx
mov dword [ebp - 0x7c], ecx
mov eax, dword [ebp - 0x60]
cmp eax, dword [ebp - 0x5c]
jae 0x5b3259
mov edx, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x60]
mov eax, dword [edx + ecx]
mov dword [ebp - 0x3c], eax
jmp 0x5b32bd
cmp dword [ebp - 0x10], 0
jne 0x5b3270
push 0x4bc056
push 0xffffffffffffffff
push 0
call fcn.005b0616
add esp, 0xc
mov dword [ebp - 0x10], 1
mov edx, dword [ebp - 0x60]
add edx, dword [ebp - 0x48]
add edx, dword [ebp - 0x34]
push edx
push esi
call fcn.005b3f62
add esp, 8
test eax, eax
jne 0x5b329a
mov dword [ebp - 0xc], 2
jmp 0x5b361e
push 0
push eax
mov ecx, dword [ebp - 0x80]
push ecx
call fcn.005fb66a
add esp, 0xc
mov eax, dword [ebp - 0x80]
push eax
push 4
push 1
lea edx, [ebp - 0x3c]
push edx
call fcn.005fb5da
add esp, 0x10
cmp dword [ebp - 0x3c], 0
je 0x5b361e
test byte [ebp - 0x39], 0x80
je 0x5b34fc
cmp dword [ebp - 0x18], 0
jne 0x5b336f
xor eax, eax
push esi
lea edi, [ebp - 0x388]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea esi, [ebp - 0x488]
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
lea eax, [ebp - 0x588]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebp - 0x488]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
push eax
push edx
call fcn.005f964e
add esp, 8
mov edi, 0x10000
lea eax, [ebp - 0x288]
push eax
push 0x81
push edi
call fcn.005ba9ca
add esp, 0xc
mov ebx, eax
test ebx, ebx
jne 0x5b3340
xor edi, edi
jmp 0x5b3368
lea eax, [ebp - 0x488]
push eax
lea edx, [ebp - 0x288]
push edx
call fcn.005f98c6
add esp, 8
test eax, eax
je 0x5b3368
add edi, 0x10000
cmp edi, 0x10000000
jb 0x5b3321
mov dword [ebp - 0x18], 1
and dword [ebp - 0x3c], 0x7fffffff
test edi, edi
je 0x5b3404
cmp dword [ebp - 0x3c], 0x10000
jae 0x5b3404
lea ecx, [ebp - 0x488]
push ecx
push 0x82
mov eax, dword [ebp - 0x3c]
add eax, edi
push eax
call fcn.005ba9ca
add esp, 0xc
test eax, eax
jle 0x5b3404
cmp dword [0x4d6eb4], 0
je 0x5b33d6
lea edx, [ebp - 0x488]
lea eax, [ebp - 0x388]
push edx
lea edx, [ebp - 0x288]
mov ecx, dword [ebp - 0x3c]
push ecx
push eax
push 0x4bc07b
push edx
call fcn.005fcc36
add esp, 0x14
jmp 0x5b33f8
lea ecx, [ebp - 0x488]
lea eax, [ebp - 0x388]
push ecx
push eax
lea edx, [ebp - 0x288]
push 0x4bc085
push edx
call fcn.005fcc36
add esp, 0x10
mov byte [ebp - 0x189], 0
jmp 0x5b35f6
cmp dword [ebp - 0x7c], 0
je 0x5b34d8
push 3
push 4
mov ecx, dword [ebp - 0x64]
add ecx, dword [ebp - 0x48]
add ecx, dword [ebp - 0x34]
push ecx
lea eax, [ebp - 0x70]
push eax
call fcn.005b7316
add esp, 0x10
cmp eax, 4
jne 0x5b34d8
mov edx, dword [ebp - 0x7c]
mov ecx, dword [edx]
cmp ecx, dword [ebp - 0x70]
ja 0x5b34d8
mov eax, dword [ebp - 0x7c]
mov ecx, dword [ebp - 0x7c]
mov edx, dword [eax]
add edx, dword [ecx + 4]
cmp edx, dword [ebp - 0x70]
jbe 0x5b34d8
lea eax, [ebp - 0x488]
push eax
push 0x32
mov edx, dword [ebp - 0x70]
push edx
call fcn.005ba9ca
add esp, 0xc
test eax, eax
jle 0x5b34d8
xor ecx, ecx
mov cl, byte [ebp - 0x488]
cmp ecx, 0x23
je 0x5b34d8
cmp dword [0x4d6eb4], 0
je 0x5b34aa
lea eax, [ebp - 0x488]
lea ecx, [ebp - 0x388]
push eax
lea eax, [ebp - 0x288]
mov edx, dword [ebp - 0x3c]
push edx
push ecx
push 0x4bc07b
push eax
call fcn.005fcc36
add esp, 0x14
jmp 0x5b34cc
lea edx, [ebp - 0x488]
lea ecx, [ebp - 0x388]
push edx
push ecx
lea eax, [ebp - 0x288]
push 0x4bc085
push eax
call fcn.005fcc36
add esp, 0x10
mov byte [ebp - 0x189], 0
jmp 0x5b35f6
mov edx, dword [ebp - 0x3c]
lea ecx, [ebp - 0x388]
push edx
push ecx
lea eax, [ebp - 0x288]
push 0x4bc08b
push eax
call fcn.005fcc36
add esp, 0x10
jmp 0x5b35f6
mov edx, dword [ebp - 0x48]
sub dword [ebp - 0x3c], edx
mov ecx, dword [ebp - 0x3c]
cmp ecx, dword [ebp - 0x5c]
jae 0x5b354c
mov eax, dword [ebp - 0x78]
add eax, dword [ebp - 0x3c]
add eax, 2
push eax
lea edx, [ebp - 0x388]
push edx
call fcn.005f96de
pop ecx
lea edx, [ebp - 0x288]
mov ecx, 0x100
sub ecx, eax
lea eax, [ebp - 0x388]
sub ecx, 2
push ecx
push eax
push 0x4bc092
push edx
call fcn.005fcc36
add esp, 0x14
jmp 0x5b35f6
lea ecx, [ebp - 0x388]
lea eax, [ebp - 0x288]
push ecx
push 0x4bc09a
push eax
call fcn.005fcc36
add esp, 0xc
mov ebx, eax
mov eax, 0xfe
lea ecx, [ebp - 0x288]
sub eax, ebx
push 3
push eax
mov edx, dword [ebp - 0x3c]
add edx, dword [ebp - 0x48]
add edx, dword [ebp - 0x34]
add edx, 2
add ecx, ebx
push edx
push ecx
call fcn.005b7316
add esp, 0x10
test eax, eax
jne 0x5b35ef
mov eax, dword [ebp - 0x3c]
mov ecx, 0xfe
add eax, dword [ebp - 0x48]
sub ecx, ebx
add eax, dword [ebp - 0x34]
add eax, 2
and eax, 0xfff
push eax
mov eax, 0x1000
pop edx
sub eax, edx
cmp eax, ecx
jbe 0x5b35c1
mov eax, 0xfe
sub eax, ebx
push 3
push eax
mov edx, dword [ebp - 0x3c]
lea ecx, [ebp - 0x288]
add edx, dword [ebp - 0x48]
add edx, dword [ebp - 0x34]
add edx, 2
add ecx, ebx
push edx
push ecx
call fcn.005b7316
add esp, 0x10
test eax, eax
jne 0x5b35ef
mov dword [ebp - 0xc], 2
jmp 0x5b361e
mov byte [ebp - 0x18a], 0
lea eax, [ebp - 0x288]
push eax
push 0x33
mov edx, dword [ebp - 0x64]
add edx, dword [ebp - 0x48]
add edx, dword [ebp - 0x34]
push edx
call fcn.005ba30e
add esp, 0xc
add dword [ebp - 0x60], 4
add dword [ebp - 0x64], 4
jmp 0x5b3243
mov ecx, dword [ebp - 4]
add ecx, 0x14
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x38]
jae 0x5b3639
cmp dword [ebp - 0xc], 0
je 0x5b30f0
cmp dword [ebp - 0x78], 0
je 0x5b3648
mov edx, dword [ebp - 0x78]
push edx
call fcn.00605100
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0xc], 0
jne 0x5b3a18
cmp dword [esi + 0x158], 0
je 0x5b3a18
mov edx, dword [ebp - 0x634]
xor eax, eax
mov dword [ebp - 0x44], edx
mov ecx, dword [ebp - 0x630]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 4], eax
mov edx, dword [esi + 0x158]
lea ecx, [edx + 0xc]
mov dword [ebp - 0x84], ecx
jmp 0x5b36be
mov eax, dword [ebp - 0x84]
mov edx, dword [eax]
cmp edx, dword [ebp - 0x44]
ja 0x5b36b4
mov ecx, dword [ebp - 0x84]
mov edx, dword [ebp - 0x84]
mov eax, dword [ecx]
add eax, dword [edx + 4]
cmp eax, dword [ebp - 0x44]
ja 0x5b36c9
inc dword [ebp - 4]
add dword [ebp - 0x84], 0x28
mov ecx, dword [ebp - 4]
cmp ecx, dword [esi + 0x154]
jl 0x5b3691
cmp dword [ebp - 0xc], 0
jne 0x5b36e0
cmp dword [ebp - 0x38], 0
je 0x5b36e0
mov eax, dword [ebp - 4]
cmp eax, dword [esi + 0x154]
jl 0x5b36e7
xor edx, edx
mov dword [ebp - 0x78], edx
jmp 0x5b3711
mov ecx, dword [ebp - 0x34]
add ecx, dword [ebp - 0x44]
mov dword [esi + 0x40], ecx
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x44], eax
mov edx, dword [ebp - 0x38]
push edx
push 0
call fcn.006050fa
mov dword [ebp - 0x78], eax
cmp dword [ebp - 0x78], 0
jne 0x5b3711
mov dword [ebp - 0xc], 3
cmp dword [ebp - 0x78], 0
je 0x5b376d
push 0
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 0x14]
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov ebx, dword [ebp - 0x44]
sub ebx, dword [eax + ecx*8 + 0xc]
add edx, ebx
push edx
mov eax, dword [ebp - 0x80]
push eax
call fcn.005fb66a
add esp, 0xc
mov edx, dword [ebp - 0x80]
push edx
mov ecx, dword [ebp - 0x38]
push ecx
push 1
mov eax, dword [ebp - 0x78]
push eax
call fcn.005fb5da
add esp, 0x10
cmp eax, dword [ebp - 0x38]
je 0x5b376d
mov dword [ebp - 0xc], 1
cmp dword [ebp - 0x78], 0
je 0x5b3a09
cmp dword [ebp - 0xc], 0
jne 0x5b3a09
mov dword [ebp - 0x1c], 1
mov edx, dword [ebp - 0x38]
shl edx, 2
add edx, 8
push edx
push 0x40
call fcn.006050fa
mov dword [esi + 0x168], eax
cmp dword [esi + 0x168], 0
jne 0x5b37b4
mov dword [ebp - 0xc], 3
jmp 0x5b39d4
xor eax, eax
jmp 0x5b38c7
mov edx, dword [ebp - 0x78]
mov ecx, dword [edx + eax]
add ecx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], ecx
mov edx, dword [ebp - 0x78]
mov edx, dword [edx + eax + 4]
add eax, 8
test edx, edx
je 0x5b38c1
cmp edx, 8
jb 0x5b37e3
cmp edx, dword [ebp - 0x38]
jbe 0x5b37ef
mov dword [ebp - 0xc], 2
jmp 0x5b38d9
sub edx, 8
xor ecx, ecx
shr edx, 1
mov dword [ebp - 8], edx
mov dword [ebp - 4], ecx
mov edx, dword [ebp - 4]
cmp edx, dword [ebp - 8]
jge 0x5b38bb
mov ecx, dword [ebp - 0x78]
mov edx, dword [esi + 0x168]
movzx ebx, word [ecx + eax]
mov edi, ebx
mov ecx, dword [esi + 0x164]
shr ebx, 0xc
and edi, 0xfff
add edi, dword [ebp - 0x3c]
and ebx, 0xf
add eax, 2
test ebx, ebx
mov dword [edx + ecx*8], edi
je 0x5b38ac
cmp ebx, 3
je 0x5b384d
mov edx, dword [esi + 0xc]
add edx, dword [esi + 0x10]
cmp edx, dword [esi + 0x28]
ja 0x5b384d
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
jmp 0x5b38bb
cmp ebx, 1
je 0x5b3861
cmp ebx, 2
je 0x5b3861
cmp ebx, 4
je 0x5b3861
cmp ebx, 0xb
jne 0x5b3877
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x164]
mov dword [edx + ecx*8 + 4], 2
jmp 0x5b38a6
cmp ebx, 0xa
jne 0x5b3892
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x164]
mov dword [edx + ecx*8 + 4], 8
jmp 0x5b38a6
mov edx, dword [esi + 0x168]
mov ecx, dword [esi + 0x164]
mov dword [edx + ecx*8 + 4], 4
inc dword [esi + 0x164]
inc dword [ebp - 4]
mov edx, dword [ebp - 4]
cmp edx, dword [ebp - 8]
jl 0x5b3808
cmp dword [ebp - 0x1c], 0
je 0x5b38d9
add eax, 3
and eax, 0xfffffffc
cmp dword [ebp - 0xc], 0
jne 0x5b38d9
lea ecx, [eax + 8]
cmp ecx, dword [ebp - 0x38]
jb 0x5b37bb
push 0x45f340
push 8
mov eax, dword [esi + 0x164]
push eax
mov edx, dword [esi + 0x168]
push edx
call fcn.006024fe
add esp, 0x10
xor ecx, ecx
mov dword [ebp - 4], ecx
mov eax, dword [esi + 0x168]
mov edx, eax
mov dword [ebp - 0x84], edx
jmp 0x5b3943
mov ecx, dword [ebp - 0x84]
mov eax, dword [ecx]
cmp eax, dword [esi + 0xc]
jb 0x5b3939
mov edx, dword [ebp - 0x84]
cmp dword [edx + 4], 4
jne 0x5b3939
mov ecx, dword [ebp - 0x84]
mov edx, dword [esi + 0xc]
add edx, dword [esi + 0x10]
mov eax, dword [ecx]
add eax, 4
cmp eax, edx
jbe 0x5b394e
inc dword [ebp - 4]
add dword [ebp - 0x84], 8
mov ecx, dword [ebp - 4]
cmp ecx, dword [esi + 0x164]
jl 0x5b390b
mov eax, dword [ebp - 4]
cmp eax, dword [esi + 0x164]
jge 0x5b39b1
mov edx, dword [esi + 0x168]
mov ecx, dword [ebp - 4]
mov eax, dword [edx + ecx*8]
push eax
push esi
call fcn.005b3f62
add esp, 8
test eax, eax
je 0x5b39b1
push 0
push eax
mov edx, dword [ebp - 0x80]
push edx
call fcn.005fb66a
add esp, 0xc
mov ecx, dword [ebp - 0x80]
push ecx
push 4
push 1
lea eax, [ebp - 0x6c]
push eax
call fcn.005fb5da
add esp, 0x10
cmp eax, 4
je 0x5b39a2
xor edx, edx
mov dword [ebp - 0x6c], edx
jmp 0x5b39b1
mov ecx, dword [esi + 0x168]
mov eax, dword [ebp - 4]
mov edx, dword [ecx + eax*8]
mov dword [ebp - 0x68], edx
mov ecx, dword [esi + 0x168]
mov eax, dword [esi + 0x164]
xor edx, edx
mov dword [ecx + eax*8], edx
mov ecx, dword [esi + 0x168]
mov eax, dword [esi + 0x164]
xor edx, edx
mov dword [ecx + eax*8 + 4], edx
cmp dword [ebp - 0x1c], 0
jne 0x5b3a09
push 0x4bc09e
push 0xffffffffffffffff
push 0
call fcn.005b0616
add esp, 0xc
mov ecx, dword [esi + 0x168]
push ecx
call fcn.00605100
xor eax, eax
mov dword [esi + 0x168], eax
xor edx, edx
mov dword [ebp - 0x68], edx
xor ecx, ecx
mov dword [ebp - 0x6c], ecx
cmp dword [ebp - 0x78], 0
je 0x5b3a18
mov eax, dword [ebp - 0x78]
push eax
call fcn.00605100
cmp dword [ebp - 0xc], 0
jne 0x5b3a33
mov edx, dword [ebp - 0x34]
add edx, dword [ebp - 0x64c]
mov dword [esi + 0x14], edx
mov ecx, dword [ebp - 0x648]
mov dword [esi + 0x18], ecx
cmp dword [ebp - 0xc], 0
jne 0x5b3ae8
cmp dword [esi + 0x158], 0
je 0x5b3ae8
mov eax, dword [ebp - 0x62c]
xor ecx, ecx
mov dword [ebp - 0x44], eax
mov edx, dword [ebp - 0x628]
mov dword [ebp - 0x38], edx
mov dword [ebp - 4], ecx
mov eax, dword [esi + 0x158]
lea edx, [eax + 0xc]
mov dword [ebp - 0x84], edx
jmp 0x5b3a9f
mov ecx, dword [ebp - 0x84]
mov eax, dword [ecx]
cmp eax, dword [ebp - 0x44]
ja 0x5b3a95
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x84]
mov ecx, dword [edx]
add ecx, dword [eax + 4]
cmp ecx, dword [ebp - 0x44]
ja 0x5b3aaa
inc dword [ebp - 4]
add dword [ebp - 0x84], 0x28
mov edx, dword [ebp - 4]
cmp edx, dword [esi + 0x154]
jl 0x5b3a72
cmp dword [ebp - 0x38], 0
je 0x5b3abb
mov ecx, dword [ebp - 4]
cmp ecx, dword [esi + 0x154]
jl 0x5b3ac2
xor eax, eax
mov dword [ebp - 0x4c], eax
jmp 0x5b3ae8
mov edx, dword [ebp - 4]
lea edx, [edx + edx*4]
mov ecx, dword [esi + 0x158]
mov eax, dword [ebp - 0x44]
sub eax, dword [ecx + edx*8 + 0xc]
mov edx, dword [ebp - 4]
lea edx, [edx + edx*4]
mov ecx, dword [esi + 0x158]
add eax, dword [ecx + edx*8 + 0x14]
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x80], 0
je 0x5b3af8
mov eax, dword [ebp - 0x80]
push eax
call fcn.005faee2
pop ecx
push 1
call fcn.005ba58a
pop ecx
mov edx, dword [esi + 0x10]
mov dword [esi + 0x3e9], edx
cmp dword [ebp - 0xc], 0
jne 0x5b3cc4
cmp dword [0x4d8d64], 0
je 0x5b3b3e
cmp dword [esi + 0x28], 0
je 0x5b3b3e
mov ecx, dword [esi + 0xc]
cmp ecx, dword [esi + 0x28]
ja 0x5b3b35
mov eax, dword [esi + 0xc]
add eax, dword [esi + 0x10]
cmp eax, dword [esi + 0x28]
ja 0x5b3b3e
mov dword [ebp - 0x20], 1
jmp 0x5b3b90
xor edx, edx
mov dword [ebp - 0x20], edx
cmp dword [esi + 0x28], 0
je 0x5b3b90
mov ecx, dword [esi + 0xc]
cmp ecx, dword [esi + 0x28]
ja 0x5b3b5c
mov eax, dword [esi + 0xc]
add eax, dword [esi + 0x10]
cmp eax, dword [esi + 0x28]
ja 0x5b3b90
lea edx, [esi + 0x48]
push edx
push 8
push 0x4bc0c3
lea ecx, [ebp - 0x288]
push ecx
call fcn.005fcc36
add esp, 0x10
lea eax, [ebp - 0x288]
mov edx, dword [0x4d3b7c]
push 0x30
push 0x4bc17a
push eax
push edx
call fcn.00605520
cmp dword [esi + 0x158], 0
je 0x5b3c7d
mov ecx, dword [esi + 0xc]
add ecx, dword [esi + 0x10]
cmp ecx, dword [esi + 0x28]
ja 0x5b3c7d
mov eax, dword [esi + 0x28]
sub eax, dword [esi]
xor edx, edx
mov dword [ebp - 0x44], eax
mov dword [ebp - 4], edx
mov ecx, dword [esi + 0x158]
lea eax, [ecx + 0xc]
mov dword [ebp - 0x84], eax
jmp 0x5b3bf7
mov edx, dword [ebp - 0x84]
mov ecx, dword [edx]
cmp ecx, dword [ebp - 0x44]
ja 0x5b3bed
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x84]
mov edx, dword [eax]
add edx, dword [ecx + 4]
cmp edx, dword [ebp - 0x44]
ja 0x5b3c02
inc dword [ebp - 4]
add dword [ebp - 0x84], 0x28
mov eax, dword [ebp - 4]
cmp eax, dword [esi + 0x154]
jl 0x5b3bca
mov edx, dword [ebp - 4]
cmp edx, dword [esi + 0x154]
jge 0x5b3c7d
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 0xc]
add edx, dword [esi]
mov dword [esi + 0x3ed], edx
mov ecx, dword [ebp - 4]
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x158]
mov edx, dword [eax + ecx*8 + 8]
mov dword [esi + 0x3f1], edx
cmp dword [0x4d8d60], 0
je 0x5b3c7d
mov ecx, dword [ebp - 4]
mov eax, dword [esi + 0x158]
lea ecx, [ecx + ecx*4]
mov edx, dword [eax + ecx*8 + 0xc]
mov ecx, dword [ebp - 4]
mov eax, dword [esi + 0x158]
add edx, dword [esi]
lea ecx, [ecx + ecx*4]
add edx, dword [eax + ecx*8 + 8]
sub edx, dword [esi + 0xc]
mov dword [esi + 0x10], edx
push 0x4bc18c
push 0xffffffffffffffff
push 0
call fcn.005b0616
add esp, 0xc
mov edx, dword [ebp - 0x20]
push edx
mov ecx, dword [ebp - 0x6c]
push ecx
mov eax, dword [ebp - 0x68]
push eax
push esi
call fcn.005b40fa
add esp, 0x10
lea edx, [esi + 0x50]
push edx
mov ecx, dword [ebp - 0x4c]
push ecx
push esi
call fcn.005e862a
add esp, 0xc
cmp dword [0x4d70f8], 0
je 0x5b3d47
push 0
push 0
mov eax, dword [0x4d70f8]
push eax
call fcn.006054d8
jmp 0x5b3d47
cmp dword [ebp - 0xc], 1
jne 0x5b3cdd
lea edx, [esi + 0x50]
push edx
push 0x4bc1be
call fcn.005aa026
add esp, 8
jmp 0x5b3d0d
cmp dword [ebp - 0xc], 2
jne 0x5b3cf6
lea ecx, [esi + 0x50]
push ecx
push 0x4bc1ea
call fcn.005aa026
add esp, 8
jmp 0x5b3d0d
cmp dword [ebp - 0xc], 3
jne 0x5b3d0d
lea eax, [esi + 0x50]
push eax
push 0x4bc21f
call fcn.005aa026
add esp, 8
cmp dword [esi + 0x158], 0
je 0x5b3d22
mov edx, dword [esi + 0x158]
push edx
call fcn.00605100
xor ecx, ecx
mov dword [esi + 0x158], ecx
cmp dword [esi + 0x168], 0
je 0x5b3d3f
mov eax, dword [esi + 0x168]
push eax
call fcn.00605100
xor edx, edx
mov dword [esi + 0x168], edx
or ecx, 0xffffffff
cmp dword [ebp - 0xc], 0
jne 0x5b3d53
add ecx, 2
mov dword [esi + 0x3f9], ecx
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret