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

Disassembly:
sub esp, 0x108
push ebx
push ebp
mov ebp, dword [esp + 0x118]
push esi
mov esi, dword [esp + 0x118]
push edi
mov edi, dword [esi + 0x72b0]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x124]
mov dword [esp + 0x80], edi
mov edi, dword [esi + 0x72b4]
mov dword [esp + 0x20], ecx
lea ecx, [eax + ebp]
mov eax, dword [esi + 0x7380]
mov dword [esp + 0x94], edi
mov edi, dword [esi + 0x72b8]
mov dword [esp + 0x24], ecx
mov ecx, dword [esi + 0x7370]
mov dword [esp + 0x8c], edi
mov edi, dword [esp + 0x128]
add eax, ecx
mov ebx, ebp
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x88], eax
test edi, edi
je 0x45e400
cmp edi, 4
mov dword [esp + 0x90], edi
jl 0x45d4b9
mov dword [esp + 0x90], 4
mov edi, dword [esp + 0x20]
mov dword [esi + 0x7304], 1
mov eax, dword [esi + 0x682c]
mov ecx, dword [esi + 0x6830]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x6834]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x80]
sub ebp, eax
mov dword [esp + 0x64], ecx
sub edi, edx
lea ecx, [esp + 0x28]
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], ebp
call fcn.0045ef30
cmp eax, 0xffffff88
jbe 0x45d521
mov eax, 0xffffffec
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret
mov eax, dword [esp + 0x2c]
mov edi, dword [esi]
mov edx, dword [edi + 4]
lea ebx, [edx + eax]
mov eax, dword [esp + 0x28]
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
and eax, dword [edx*4 + 0x6d3ed0]
mov dword [esp + 0x3c], eax
call fcn.0044fc10
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
add edi, 8
mov dword [esp + 0x40], edi
mov edi, dword [esi + 8]
mov edx, dword [edi + 4]
lea ebx, [edx + ecx]
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
and eax, dword [edx*4 + 0x6d3ed0]
mov dword [esp + 0x44], eax
call fcn.0044fc10
mov eax, dword [esp + 0x2c]
mov esi, dword [esi + 4]
mov edx, dword [esi + 4]
add edi, 8
mov dword [esp + 0x48], edi
lea edi, [edx + eax]
mov eax, dword [esp + 0x28]
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edi
and eax, dword [edx*4 + 0x6d3ed0]
mov dword [esp + 0x4c], eax
call fcn.0044fc10
add esi, 8
mov dword [esp + 0x50], esi
mov dword [esp + 0x1c], 0
call fcn.0044fc10
cmp eax, 2
jg 0x45d93d
lea ebp, [esp + 0xd8]
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x90]
jge 0x45d94e
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov ecx, dword [eax + edx*8]
mov ebx, dword [eax + edx*8 + 4]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov edx, dword [eax + esi*8]
mov eax, dword [eax + esi*8 + 4]
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov dword [esp + 0xc4], eax
mov eax, dword [esi + edi*8]
mov edi, dword [esi + edi*8 + 4]
mov dword [esp + 0x98], eax
mov dword [esp + 0x74], ecx
mov dword [esp + 0xc0], edx
shr ecx, 0x10
shr edx, 0x10
shr eax, 0x10
mov dword [esp + 0x78], ebx
mov byte [esp + 0x13], cl
mov byte [esp + 0x7f], dl
cmp al, 1
jbe 0x45d721
cmp dword [esp + 0x12c], 0
je 0x45d6d7
cmp al, 0x19
jb 0x45d6d7
mov ebx, dword [esp + 0x2c]
mov ecx, 0x20
movzx eax, al
sub ecx, ebx
cmp eax, ecx
jae 0x45d67e
mov ecx, eax
mov esi, eax
sub esi, ecx
sub eax, esi
mov edx, eax
mov eax, dword [esp + 0x28]
mov ecx, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, esi
add ebx, edx
mov dword [esp + 0x2c], ebx
shl eax, cl
lea ecx, [esp + 0x28]
add eax, edi
mov ebx, eax
call fcn.0044fc10
test esi, esi
je 0x45d703
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, edx
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
add edx, esi
mov dword [esp + 0x2c], edx
add ebx, eax
jmp 0x45d703
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov ecx, edx
and ecx, 0x1f
shl ebx, cl
movzx eax, al
mov ecx, eax
neg ecx
and ecx, 0x1f
shr ebx, cl
add edx, eax
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edx
add ebx, edi
call fcn.0044fc10
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x28]
mov dword [esp + 0x58], edx
mov dl, byte [esp + 0x7f]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x54], ebx
jmp 0x45d79d
mov esi, dword [esp + 0x28]
xor ecx, ecx
test ebx, ebx
sete cl
mov dword [esp + 0x20], ecx
test al, al
jne 0x45d750
test ecx, ecx
jne 0x45d73e
mov ebx, dword [esp + 0x54]
jmp 0x45d79d
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], eax
mov dword [esp + 0x54], ebx
jmp 0x45d79d
mov ebx, dword [esp + 0x2c]
mov ecx, ebx
and ecx, 0x1f
mov eax, esi
shl eax, cl
mov ecx, dword [esp + 0x20]
inc ebx
mov dword [esp + 0x2c], ebx
shr eax, 0x1f
add eax, ecx
mov ecx, dword [esp + 0x54]
add eax, edi
lea edi, [ecx - 1]
cmp eax, 3
je 0x45d77d
mov edi, dword [esp + eax*4 + 0x54]
xor ebx, ebx
test edi, edi
sete bl
add edi, ebx
cmp eax, 1
je 0x45d793
mov eax, dword [esp + 0x58]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], ecx
mov ebx, edi
mov dword [esp + 0x54], edi
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xa4], ecx
test dl, dl
jbe 0x45d7e0
mov ecx, dword [esp + 0x2c]
and ecx, 0x1f
movzx edi, dl
mov eax, esi
shl eax, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, edi
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xc4]
add eax, ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0xa4], eax
movzx edi, byte [esp + 0x13]
movzx edx, dl
add edx, edi
cmp edx, 0x14
jl 0x45d7fc
lea ecx, [esp + 0x28]
call fcn.0044fc10
mov esi, dword [esp + 0x28]
cmp byte [esp + 0x13], 0
mov edx, dword [esp + 0x78]
mov dword [esp + 0xa0], edx
jbe 0x45d831
mov eax, dword [esp + 0x2c]
mov ecx, eax
and ecx, 0x1f
shl esi, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr esi, cl
add eax, edi
mov dword [esp + 0x2c], eax
add esi, edx
mov dword [esp + 0xa0], esi
lea ecx, [esp + 0x28]
call fcn.0044fc10
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0xa0]
add ecx, eax
mov eax, dword [esp + 0x64]
cmp ebx, ecx
ja 0x45d853
mov eax, dword [esp + 0x60]
movzx esi, byte [esp + 0x77]
mov edx, dword [esp + 0xa4]
sub eax, ebx
add eax, ecx
add ecx, edx
mov dword [esp + 0x68], ecx
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x2c]
lea edi, [esi + eax]
mov eax, dword [esp + 0x28]
mov ecx, edi
neg ecx
and ecx, 0x1f
mov edx, eax
shr edx, cl
movzx ecx, word [esp + 0x74]
and edx, dword [esi*4 + 0x6d3ed0]
add ecx, edx
movzx edx, byte [esp + 0xc3]
lea esi, [edx + edi]
mov dword [esp + 0x3c], ecx
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], esi
and eax, dword [edx*4 + 0x6d3ed0]
movzx edx, word [esp + 0xc0]
add edx, eax
mov dword [esp + 0x4c], edx
call fcn.0044fc10
movzx edx, byte [esp + 0x9b]
mov eax, dword [esp + 0x2c]
inc dword [esp + 0x1c]
lea esi, [edx + eax]
mov eax, dword [esp + 0x28]
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
movzx ecx, word [esp + 0x98]
and eax, dword [edx*4 + 0x6d3ed0]
mov edx, dword [esp + 0xa0]
add ecx, eax
mov eax, dword [esp + 0xa4]
mov dword [ebp], edx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0xac]
mov dword [ebp + 4], eax
mov dword [ebp + 8], ebx
mov dword [ebp + 0xc], ecx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], esi
add ebp, 0x10
call fcn.0044fc10
cmp eax, 2
jle 0x45d5e8
mov edx, dword [esp + 0x1c]
cmp edx, dword [esp + 0x90]
jl 0x45d511
lea ecx, [esp + 0x28]
call fcn.0044fc10
cmp eax, 2
jg 0x45e02c
mov eax, dword [esp + 0x128]
cmp dword [esp + 0x1c], eax
jge 0x45e03d
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov esi, dword [eax + ecx*8]
mov ebp, dword [eax + ecx*8 + 4]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov ebx, dword [eax + ecx*8]
mov ecx, dword [eax + ecx*8 + 4]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x44]
mov edi, dword [eax + ecx*8]
mov edx, dword [eax + ecx*8 + 4]
mov eax, esi
shr eax, 0x10
mov byte [esp + 0x13], al
mov eax, edi
mov dword [esp + 0x98], ebx
shr eax, 0x10
shr ebx, 0x10
mov dword [esp + 0xd0], esi
mov dword [esp + 0xd4], ebp
mov dword [esp + 0xa0], edi
cmp al, 1
jbe 0x45dab4
cmp dword [esp + 0x12c], 0
je 0x45da6b
cmp al, 0x19
jb 0x45da6b
mov ebp, dword [esp + 0x2c]
mov ecx, 0x20
movzx eax, al
sub ecx, ebp
cmp eax, ecx
jae 0x45da04
mov ecx, eax
mov esi, eax
sub esi, ecx
sub eax, esi
mov edi, eax
mov eax, dword [esp + 0x28]
mov ecx, ebp
and ecx, 0x1f
shl eax, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, esi
add ebp, edi
mov dword [esp + 0x2c], ebp
shl eax, cl
lea ecx, [esp + 0x28]
add eax, edx
mov edi, eax
mov dword [esp + 0x84], edi
call fcn.0044fc10
test esi, esi
je 0x45da9f
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, edx
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
add edx, esi
mov dword [esp + 0x2c], edx
add edi, eax
mov dword [esp + 0x84], edi
jmp 0x45da9f
mov edi, dword [esp + 0x2c]
movzx esi, al
mov eax, dword [esp + 0x28]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
add edi, esi
mov dword [esp + 0x2c], edi
lea ecx, [esp + 0x28]
lea edi, [eax + edx]
mov dword [esp + 0x84], edi
call fcn.0044fc10
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], eax
jmp 0x45db2c
xor ecx, ecx
test ebp, ebp
sete cl
mov edi, ecx
test al, al
jne 0x45dae0
test edi, edi
jne 0x45dad2
mov edi, dword [esp + 0x54]
mov dword [esp + 0x84], edi
jmp 0x45db30
mov edx, dword [esp + 0x54]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x58], edx
jmp 0x45db25
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, esi
and ecx, 0x1f
shl eax, cl
inc esi
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x54]
shr eax, 0x1f
add eax, edi
add eax, edx
lea edi, [esi - 1]
cmp eax, 3
je 0x45db0b
mov edi, dword [esp + eax*4 + 0x54]
xor ecx, ecx
test edi, edi
sete cl
add edi, ecx
cmp eax, 1
je 0x45db21
mov edx, dword [esp + 0x58]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], esi
mov dword [esp + 0x84], edi
mov dword [esp + 0x54], edi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0xb4], esi
test bl, bl
jbe 0x45db6c
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, ebp
and ecx, 0x1f
movzx edx, bl
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
add ebp, edx
mov dword [esp + 0x2c], ebp
add esi, eax
mov dword [esp + 0xb4], esi
movzx ebp, byte [esp + 0x13]
movzx eax, bl
add eax, ebp
cmp eax, 0x14
jl 0x45db84
lea ecx, [esp + 0x28]
call fcn.0044fc10
cmp byte [esp + 0x13], 0
mov ebx, dword [esp + 0xd4]
mov dword [esp + 0xb0], ebx
jbe 0x45dbc0
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, edx
and ecx, 0x1f
shl eax, cl
mov ecx, ebp
neg ecx
and ecx, 0x1f
shr eax, cl
add edx, ebp
mov dword [esp + 0x2c], edx
add ebx, eax
mov dword [esp + 0xb0], ebx
lea ecx, [esp + 0x28]
call fcn.0044fc10
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x64]
add ecx, ebx
cmp edi, ecx
ja 0x45dbdb
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x2c]
add esi, ecx
mov dword [esp + 0x68], esi
movzx esi, byte [esp + 0xd3]
sub eax, edi
add eax, ecx
lea edi, [esi + edx]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x28]
mov ecx, edi
neg ecx
and ecx, 0x1f
mov edx, eax
shr edx, cl
movzx ecx, word [esp + 0xd0]
and edx, dword [esi*4 + 0x6d3ed0]
add ecx, edx
movzx edx, byte [esp + 0x9b]
lea esi, [edx + edi]
mov dword [esp + 0x3c], ecx
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], esi
and eax, dword [edx*4 + 0x6d3ed0]
movzx edx, word [esp + 0x98]
add edx, eax
mov dword [esp + 0x4c], edx
call fcn.0044fc10
movzx edx, byte [esp + 0xa3]
mov eax, dword [esp + 0x2c]
lea esi, [edx + eax]
mov eax, dword [esp + 0x28]
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
movzx ecx, word [esp + 0xa0]
and eax, dword [edx*4 + 0x6d3ed0]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x1c]
add ecx, eax
and esi, 3
shl esi, 4
mov eax, dword [esp + esi + 0xe4]
mov ebx, dword [esp + esi + 0xdc]
mov edx, dword [esp + esi + 0xe0]
lea esi, [esp + esi + 0xd8]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x44], ecx
mov ecx, dword [esi]
lea edi, [ecx + eax]
lea eax, [ebx + ecx]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x18]
lea ebp, [ecx + eax]
mov eax, edi
sub eax, edx
mov dword [esp + 0xc0], ebp
cmp ebp, dword [esp + 0x88]
ja 0x45df93
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x74]
add edx, ebp
mov ebp, dword [esp + 0x24]
add ebp, 0xffffffe0
cmp edx, ebp
ja 0x45df93
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x74]
sub edx, dword [esp + 0x14]
add ebp, 0x20
cmp edx, ebp
jb 0x45df93
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov edx, dword [edx]
mov dword [ebp], edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 4]
mov dword [ebp + 4], edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 8]
mov dword [ebp + 8], edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0xc]
mov dword [ebp + 0xc], edx
cmp ecx, 0x10
jbe 0x45ddc7
mov edx, dword [esp + 0x18]
add ecx, 0xfffffff0
mov dword [esp + 0x20], ecx
lea ecx, [ebp + 0x10]
mov ebp, dword [esp + 0x20]
add ebp, ecx
add edx, 0x10
cmp dword [esp + 0x20], 0x10
mov dword [esp + 0x18], ebp
mov ebp, dword [edx]
mov dword [ecx], ebp
mov ebp, dword [edx + 4]
mov dword [ecx + 4], ebp
mov ebp, dword [edx + 8]
mov dword [ecx + 8], ebp
mov ebp, dword [edx + 0xc]
mov dword [ecx + 0xc], ebp
jle 0x45ddc7
add ecx, 0x10
add edx, 0x10
mov ebp, dword [edx]
mov dword [ecx], ebp
mov ebp, dword [edx + 4]
mov dword [ecx + 4], ebp
mov ebp, dword [edx + 8]
mov dword [ecx + 8], ebp
mov ebp, dword [edx + 0xc]
mov dword [ecx + 0xc], ebp
mov ebp, dword [edx + 0x10]
add edx, 0x10
add ecx, 0x10
mov dword [ecx], ebp
mov ebp, dword [edx + 4]
mov dword [ecx + 4], ebp
mov ebp, dword [edx + 8]
mov dword [ecx + 8], ebp
mov ebp, dword [edx + 0xc]
mov dword [ecx + 0xc], ebp
add ecx, 0x10
add edx, 0x10
cmp ecx, dword [esp + 0x18]
jb 0x45dd88
mov ecx, dword [esp + 0xc0]
mov edx, edi
sub edx, dword [esp + 0x80]
mov dword [esp + 0x18], ecx
mov ecx, dword [esi + 8]
cmp ecx, edx
jbe 0x45de3b
mov edx, edi
sub edx, dword [esp + 0x94]
cmp ecx, edx
ja 0x45d511
mov ebp, dword [esp + 0x8c]
mov ecx, ebp
sub ecx, dword [esp + 0x80]
add eax, ecx
lea edx, [eax + ebx]
cmp edx, ebp
ja 0x45de23
push ebx
push eax
push edi
call fcn.005e6110
mov eax, dword [esp + 0x80]
add esp, 0xc
jmp 0x45dfe2
sub ebp, eax
push ebp
push eax
push edi
call fcn.005e6110
mov eax, dword [esp + 0x8c]
add esp, 0xc
add edi, ebp
sub ebx, ebp
mov ebp, dword [esi + 8]
cmp ebp, 0x10
jb 0x45dead
cmp ebx, 0x10
mov ecx, dword [eax]
mov dword [edi], ecx
mov ecx, dword [eax + 4]
mov dword [edi + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edi + 8], ecx
mov ecx, dword [eax + 0xc]
lea edx, [ebx + edi]
mov dword [edi + 0xc], ecx
jle 0x45dea4
lea ecx, [edi + 0x10]
add eax, 0x10
mov edi, dword [eax]
mov dword [ecx], edi
mov edi, dword [eax + 4]
mov dword [ecx + 4], edi
mov edi, dword [eax + 8]
mov dword [ecx + 8], edi
mov edi, dword [eax + 0xc]
mov dword [ecx + 0xc], edi
mov edi, dword [eax + 0x10]
add eax, 0x10
add ecx, 0x10
mov dword [ecx], edi
mov edi, dword [eax + 4]
mov dword [ecx + 4], edi
mov edi, dword [eax + 8]
mov dword [ecx + 8], edi
mov edi, dword [eax + 0xc]
mov dword [ecx + 0xc], edi
add ecx, 0x10
add eax, 0x10
cmp ecx, edx
jb 0x45de67
mov eax, dword [esp + 0x74]
jmp 0x45dfe2
cmp ebp, 8
jae 0x45dee0
movzx edx, byte [eax]
mov ecx, dword [ebp*4 + 0x6d4970]
mov byte [edi], dl
movzx edx, byte [eax + 1]
mov byte [edi + 1], dl
movzx edx, byte [eax + 2]
mov byte [edi + 2], dl
movzx edx, byte [eax + 3]
mov byte [edi + 3], dl
add eax, dword [ebp*4 + 0x6d4950]
mov edx, dword [eax]
sub eax, ecx
jmp 0x45dee7
mov ecx, dword [eax]
mov dword [edi], ecx
mov edx, dword [eax + 4]
mov dword [edi + 4], edx
cmp ebx, 8
jbe 0x45df8d
lea ecx, [eax + 8]
lea eax, [edi + 8]
mov edi, eax
add ebx, 0xfffffff8
sub edi, ecx
cmp edi, 0x10
lea edx, [eax + ebx]
jge 0x45df2c
sub ecx, eax
lea ebx, [ebx]
mov edi, dword [eax + ecx]
mov dword [eax], edi
mov edi, dword [eax + ecx + 4]
mov dword [eax + 4], edi
add eax, 8
cmp eax, edx
jb 0x45df10
mov eax, dword [esp + 0x74]
jmp 0x45dfe2
cmp ebx, 0x10
mov edi, dword [ecx]
mov dword [eax], edi
mov edi, dword [ecx + 4]
mov dword [eax + 4], edi
mov edi, dword [ecx + 8]
mov dword [eax + 8], edi
mov edi, dword [ecx + 0xc]
mov dword [eax + 0xc], edi
jle 0x45df8d
add eax, 0x10
add ecx, 0x10
lea ecx, [ecx]
mov edi, dword [ecx]
mov dword [eax], edi
mov edi, dword [ecx + 4]
mov dword [eax + 4], edi
mov edi, dword [ecx + 8]
mov dword [eax + 8], edi
mov edi, dword [ecx + 0xc]
mov dword [eax + 0xc], edi
mov edi, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], edi
mov edi, dword [ecx + 4]
mov dword [eax + 4], edi
mov edi, dword [ecx + 8]
mov dword [eax + 8], edi
mov edi, dword [ecx + 0xc]
mov dword [eax + 0xc], edi
add eax, 0x10
add ecx, 0x10
cmp eax, edx
jb 0x45df50
mov eax, dword [esp + 0x74]
jmp 0x45dfe2
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x80]
push eax
mov eax, dword [esp + 0x8c]
push ecx
push edx
mov edx, dword [esi]
push eax
lea ecx, [esp + 0x28]
push ecx
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esi + 8]
mov ecx, ebx
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0xc]
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x38]
call fcn.0045cb10
add esp, 0x24
cmp eax, 0xffffff88
ja 0x45e433
mov edx, dword [esp + 0xb0]
mov ecx, dword [esp + 0xb4]
add dword [esp + 0x14], eax
inc dword [esp + 0x1c]
mov dword [esi], edx
mov edx, dword [esp + 0x84]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0xbc]
mov dword [esi + 8], edx
mov dword [esi + 0xc], ecx
lea ecx, [esp + 0x28]
call fcn.0044fc10
cmp eax, 2
jle 0x45d960
mov edx, dword [esp + 0x128]
cmp dword [esp + 0x1c], edx
jl 0x45d511
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x90]
cmp eax, dword [esp + 0x128]
mov dword [esp + 0x1c], eax
jge 0x45e3c5
lea esp, [esp]
and eax, 3
shl eax, 4
mov edx, dword [esp + eax + 0xe4]
mov ecx, dword [esp + eax + 0xd8]
mov ebp, dword [esp + eax + 0xdc]
mov edi, dword [esp + eax + 0xe0]
lea eax, [esp + eax + 0xd8]
mov dword [esp + 0xbc], edx
mov edx, dword [esp + 0x14]
lea esi, [ecx + edx]
lea edx, [ecx + ebp]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x18]
lea ebx, [ecx + edx]
mov edx, esi
sub edx, edi
mov dword [esp + 0xb8], edi
mov dword [esp + 0x20], ebx
cmp ebx, dword [esp + 0x88]
ja 0x45e353
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x74]
add edi, ebx
mov ebx, dword [esp + 0x24]
add ebx, 0xffffffe0
cmp edi, ebx
ja 0x45e353
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x74]
sub edi, dword [esp + 0x14]
add ebx, 0x20
cmp edi, ebx
jb 0x45e353
mov eax, dword [esp + 0x18]
mov edi, dword [eax]
mov ebx, dword [esp + 0x14]
mov dword [ebx], edi
mov edi, dword [eax + 4]
mov dword [ebx + 4], edi
mov edi, dword [eax + 8]
mov dword [ebx + 8], edi
mov edi, dword [eax + 0xc]
mov dword [ebx + 0xc], edi
cmp ecx, 0x10
jbe 0x45e190
lea edi, [ecx - 0x10]
cmp edi, 0x10
lea ecx, [eax + 0x10]
lea eax, [ebx + 0x10]
lea ebx, [eax + edi]
mov dword [esp + 0xc0], ebx
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
jle 0x45e190
mov edi, dword [esp + 0xc0]
add eax, 0x10
add ecx, 0x10
mov ebx, dword [ecx]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
mov ebx, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov ebx, dword [ecx + 8]
mov dword [eax + 8], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + 0xc], ebx
add eax, 0x10
add ecx, 0x10
cmp eax, edi
jb 0x45e153
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x80]
mov edi, dword [esp + 0xb8]
mov dword [esp + 0x18], ecx
mov ecx, esi
sub ecx, ebx
mov eax, esi
cmp edi, ecx
jbe 0x45e205
sub eax, dword [esp + 0x94]
cmp edi, eax
ja 0x45d511
mov edi, dword [esp + 0x8c]
mov ecx, edi
sub ecx, ebx
add edx, ecx
lea eax, [edx + ebp]
cmp eax, edi
ja 0x45e1ea
push ebp
push edx
push esi
call fcn.005e6110
mov eax, dword [esp + 0x80]
add esp, 0xc
jmp 0x45e3a2
sub edi, edx
push edi
push edx
push esi
call fcn.005e6110
add esp, 0xc
lea eax, [edi + esi]
sub ebp, edi
mov edi, dword [esp + 0xb8]
mov edx, ebx
cmp edi, 0x10
jb 0x45e276
cmp ebp, 0x10
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
mov ecx, dword [edx + 8]
mov dword [eax + 8], ecx
mov ecx, dword [edx + 0xc]
lea esi, [eax + ebp]
mov dword [eax + 0xc], ecx
jle 0x45e26d
add eax, 0x10
lea ecx, [edx + 0x10]
mov edi, edi
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
add eax, 0x10
add ecx, 0x10
cmp eax, esi
jb 0x45e230
mov eax, dword [esp + 0x74]
jmp 0x45e3a2
cmp edi, 8
jae 0x45e2a9
movzx ecx, byte [edx]
mov esi, dword [edi*4 + 0x6d4970]
mov byte [eax], cl
movzx ecx, byte [edx + 1]
mov byte [eax + 1], cl
movzx ecx, byte [edx + 2]
mov byte [eax + 2], cl
movzx ecx, byte [edx + 3]
mov byte [eax + 3], cl
add edx, dword [edi*4 + 0x6d4950]
mov ecx, dword [edx]
sub edx, esi
jmp 0x45e2b0
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
cmp ebp, 8
jbe 0x45e34d
add eax, 8
lea ecx, [edx + 8]
mov esi, eax
add ebp, 0xfffffff8
sub esi, ecx
cmp esi, 0x10
lea edx, [eax + ebp]
jge 0x45e2ef
sub ecx, eax
mov esi, dword [eax + ecx]
mov dword [eax], esi
mov esi, dword [eax + ecx + 4]
mov dword [eax + 4], esi
add eax, 8
cmp eax, edx
jb 0x45e2d3
mov eax, dword [esp + 0x74]
jmp 0x45e3a2
cmp ebp, 0x10
mov esi, dword [ecx]
mov dword [eax], esi
mov esi, dword [ecx + 4]
mov dword [eax + 4], esi
mov esi, dword [ecx + 8]
mov dword [eax + 8], esi
mov esi, dword [ecx + 0xc]
mov dword [eax + 0xc], esi
jle 0x45e34d
add eax, 0x10
add ecx, 0x10
mov esi, dword [ecx]
mov dword [eax], esi
mov esi, dword [ecx + 4]
mov dword [eax + 4], esi
mov esi, dword [ecx + 8]
mov dword [eax + 8], esi
mov esi, dword [ecx + 0xc]
mov dword [eax + 0xc], esi
mov esi, dword [ecx + 0x10]
add ecx, 0x10
add eax, 0x10
mov dword [eax], esi
mov esi, dword [ecx + 4]
mov dword [eax + 4], esi
mov esi, dword [ecx + 8]
mov dword [eax + 8], esi
mov esi, dword [ecx + 0xc]
mov dword [eax + 0xc], esi
add eax, 0x10
add ecx, 0x10
cmp eax, edx
jb 0x45e310
mov eax, dword [esp + 0x74]
jmp 0x45e3a2
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x94]
push edx
mov edx, dword [esp + 0x84]
push ecx
mov ecx, dword [esp + 0x90]
push edx
push ecx
lea edx, [esp + 0x28]
push edx
mov edx, dword [eax]
sub esp, 0x10
mov ecx, esp
mov dword [ecx], edx
mov edx, ebp
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], eax
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x38]
call fcn.0045cb10
add esp, 0x24
cmp eax, 0xffffff88
ja 0x45e433
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, dword [esp + 0x128]
mov dword [esp + 0x1c], eax
jl 0x45e060
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x120]
mov dword [eax + 0x682c], ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax + 0x6834], ecx
mov ecx, dword [esp + 0x18]
mov dword [eax + 0x6830], edx
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0x24]
sub eax, ecx
mov esi, eax
sub edx, ebx
cmp esi, edx
jbe 0x45e41e
mov eax, 0xffffffba
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret
test ebx, ebx
je 0x45e42f
push esi
push ecx
push ebx
call fcn.005e47d0
add esp, 0xc
add ebx, esi
sub ebx, ebp
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret