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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x476625
mov eax, dword fs:[0]
push eax
sub esp, 0x320
mov eax, dword [0x4921c0]
xor eax, esp
mov dword [esp + 0x318], eax
push ebx
push esi
push edi
mov eax, dword [0x4921c0]
xor eax, esp
push eax
lea eax, [esp + 0x330]
mov dword fs:[0], eax
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov ebx, edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x18], ebx
cmp eax, 0x63
jne 0x45ccbb
cmp dword [0x58ce40], 2
je 0x45ccdc
cmp dword [0x58ca6c], 0
je 0x45ccac
cmp dword [0x540998], 0
jne 0x45ccdc
call fcn.00401d30
test eax, eax
jne 0x45ccdc
push esi
mov esi, edi
mov ecx, ebx
call fcn.004572e0
jmp 0x45eb7b
cmp eax, 0xffffffff
jne 0x45ccd4
push 0x484d0c
push 0x484d2c
call fcn.00456ce0
add esp, 8
jmp 0x45ccdc
test eax, eax
je 0x45eb7b
mov ecx, dword [0x4935ec]
test edi, edi
je 0x45ccf3
mov eax, dword [edi]
mov ebx, dword [edi + 4]
mov edx, dword [edi + 8]
mov edi, dword [edi + 0xc]
jmp 0x45cd01
mov edi, dword [0x4937f0]
xor ebx, ebx
xor eax, eax
lea edx, [ecx - 1]
dec edi
mov dword [esp + 0x54], edx
sub edx, eax
inc edx
mov dword [esp + 0x50], edi
sub edi, ebx
mov dword [esp + 0x28], edx
mov dword [esp + 0x4c], edx
lea edx, [edi + 1]
mov edi, edx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x4c]
add edx, eax
cmp edx, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x5c], ebx
mov dword [0x53879c], 0
mov dword [0x538798], 0
mov dword [0x5387a0], 0
mov dword [0x5387a4], 0
mov dword [esp + 0x48], edi
jl 0x45cd63
sub ecx, eax
mov dword [esp + 0x4c], ecx
mov eax, dword [0x4937f0]
lea ecx, [edi + ebx]
cmp ecx, eax
jl 0x45cd77
sub eax, ebx
mov edi, eax
mov dword [esp + 0x48], eax
mov eax, dword [0x58ce40]
cmp eax, 1
jne 0x45cdeb
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov esi, eax
mov dword [ebp + 0xc], esi
mov eax, dword [ebp + 8]
cmp eax, 0x12
je 0x45cd9a
cmp eax, 0xf
jne 0x45cdb5
mov edx, dword [esp + 0x18]
cmp byte [edx], 0
jne 0x45cdb5
push 0x484d34
push 0x484d60
call fcn.00456ce0
add esp, 8
cmp byte [0x4933e4], 0
je 0x45ce00
cmp dword [0x540998], 0
jne 0x45cdd0
call fcn.00401d30
test eax, eax
je 0x45ce00
cmp dword [0x58ca6c], 0
jne 0x45cdf9
mov eax, esi
cdq
and edx, 7
add eax, edx
sar eax, 3
mov esi, eax
mov dword [ebp + 0xc], esi
jmp 0x45ce00
cmp eax, 2
jne 0x45cd8d
mov dword [ebp + 8], 1
jmp 0x45cdb5
mov dword [ebp + 8], 1
cmp dword [esp + 0x4c], 1
jl 0x45eb7b
cmp edi, 1
jl 0x45eb7b
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [0x47828c]
mov edi, eax
mov eax, dword [ebp + 8]
dec eax
mov dword [esp + 0x6c], edi
mov dword [0x58cae8], 0
cmp eax, 0x59
ja case.0x45ce46.19
movzx edx, byte [eax + 0x45ebf4]
jmp dword [edx*4 + 0x45eba4]
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], 0
call dword [0x4783b0]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
lea esi, [eax + ecx]
cmp esi, dword [esp + 0x54]
jg 0x45cea7
nop
mov edx, dword [0x494848]
mov eax, dword [esp + 0x24]
push 0xcc0020
push ebx
push esi
push edx
push eax
push 1
push ebx
push esi
push edi
call dword [0x478060]
add esi, 0x10
cmp esi, dword [esp + 0x54]
jle 0x45ce80
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45cec3
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jae 0x45cede
sub ecx, eax
push ecx
call dword [0x47823c]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x10
mov dword [esp + 0x14], eax
jl 0x45ce64
jmp case.0x45ce46.1
cmp byte [0x541540], 0
je case.0x45ce46.1
mov dword [0x58cae8], 1
jmp case.0x45ce46.1
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], 0xf
call dword [0x4783b0]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x34]
lea esi, [edx + eax]
cmp esi, dword [esp + 0x54]
jg 0x45cf77
jmp 0x45cf50
mov ecx, dword [0x494848]
mov edx, dword [esp + 0x24]
push 0xcc0020
push ebx
push esi
push ecx
push edx
push 1
push ebx
push esi
push edi
call dword [0x478060]
add esi, 0x10
cmp esi, dword [esp + 0x54]
jle 0x45cf50
mov eax, dword [esp + 0x2c]
push eax
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45cf97
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jae 0x45cfb2
sub ecx, eax
push ecx
call dword [0x47823c]
sub dword [esp + 0x14], 1
jns 0x45cf28
jmp case.0x45ce46.1
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], 0
lea esp, [esp]
call dword [0x4783b0]
mov ecx, dword [esp + 0x14]
lea esi, [ecx + ebx]
cmp esi, dword [esp + 0x50]
mov dword [esp + 0x1c], eax
jg 0x45d02b
jmp 0x45d000
mov eax, dword [esp + 0x34]
mov edx, dword [0x494848]
mov ecx, dword [esp + 0x28]
push 0xcc0020
push esi
push eax
push edx
push 1
push ecx
push esi
push eax
push edi
call dword [0x478060]
add esi, 0x10
cmp esi, dword [esp + 0x50]
jle 0x45d000
mov edx, dword [esp + 0x2c]
push edx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d04b
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jae 0x45d066
sub ecx, eax
push ecx
call dword [0x47823c]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x10
mov dword [esp + 0x14], eax
jl 0x45cfe0
jmp case.0x45ce46.1
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], 0xf
call dword [0x4783b0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
lea esi, [eax + ebx]
cmp esi, dword [esp + 0x50]
jg 0x45d0db
jmp 0x45d0b0
mov eax, dword [esp + 0x34]
mov ecx, dword [0x494848]
mov edx, dword [esp + 0x28]
push 0xcc0020
push esi
push eax
push ecx
push 1
push edx
push esi
push eax
push edi
call dword [0x478060]
add esi, 0x10
cmp esi, dword [esp + 0x50]
jle 0x45d0b0
mov eax, dword [esp + 0x2c]
push eax
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d0fb
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jae 0x45d116
sub ecx, eax
push ecx
call dword [0x47823c]
sub dword [esp + 0x14], 1
jns 0x45d094
jmp case.0x45ce46.1
mov ecx, dword [0x4935ec]
imul ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x2aaaaaab
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [0x4935ec]
imul eax, eax, 0x492
mov ecx, eax
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx - 1]
mov dword [esp + 0x58], edx
mov dword [esp + 0x14], 0
test edx, edx
jl case.0x45ce46.1
lea esp, [esp]
call dword [0x4783b0]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], 0x18
cmp esi, dword [esp + 0x34]
jl 0x45d1d0
cmp esi, dword [esp + 0x54]
jg 0x45d1d0
mov edx, dword [0x494848]
mov eax, dword [esp + 0x24]
push 0xcc0020
push ebx
push esi
push edx
push eax
push 1
push ebx
push esi
push edi
call dword [0x478060]
sub esi, 0x17
sub dword [esp + 0x18], 1
jne 0x45d1a6
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d1fa
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jae 0x45d215
sub ecx, eax
push ecx
call dword [0x47823c]
mov eax, dword [esp + 0x14]
add eax, 0x18
cmp eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
jle 0x45d190
jmp case.0x45ce46.1
mov ecx, dword [0x4935ec]
imul ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x2aaaaaab
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [0x4935ec]
imul eax, eax, 0x492
mov ecx, eax
mov eax, 0x66666667
imul ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
lea edx, [edx + eax - 1]
mov dword [esp + 0x14], edx
test edx, edx
jl case.0x45ce46.1
lea ebx, [ebx]
call dword [0x4783b0]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], 0x18
cmp esi, dword [esp + 0x34]
jl 0x45d2d0
cmp esi, dword [esp + 0x54]
jg 0x45d2d0
mov ecx, dword [0x494848]
mov edx, dword [esp + 0x24]
push 0xcc0020
push ebx
push esi
push ecx
push edx
push 1
push ebx
push esi
push edi
call dword [0x478060]
sub esi, 0x17
sub dword [esp + 0x18], 1
jne 0x45d2a6
mov eax, dword [esp + 0x2c]
push eax
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d2fa
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jae 0x45d315
sub ecx, eax
push ecx
call dword [0x47823c]
sub dword [esp + 0x14], 0x18
jns 0x45d290
jmp case.0x45ce46.1
mov ebx, dword [0x4937f0]
mov ecx, ebx
imul ebx, esi
imul ecx, ecx, 0x3f2
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx - 1]
mov dword [esp + 0x24], edx
mov eax, 0x88888889
imul ebx
add edx, ebx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x30c30c31
imul ecx
sar edx, 3
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
cmp dword [esp + 0x24], 0
mov dword [esp + 0x14], 0
jl case.0x45ce46.1
call dword [0x4783b0]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], 0x18
lea esp, [esp]
cmp esi, dword [esp + 0x5c]
jl 0x45d3ce
cmp esi, dword [esp + 0x50]
jg 0x45d3ce
mov eax, dword [esp + 0x34]
mov ecx, dword [0x494848]
mov edx, dword [esp + 0x28]
push 0xcc0020
push esi
push eax
push ecx
push 1
push edx
push esi
push eax
push edi
call dword [0x478060]
sub esi, 0x17
sub dword [esp + 0x18], 1
jne 0x45d3a0
mov eax, dword [esp + 0x2c]
push eax
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d3f8
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
cmp eax, ebx
jae 0x45d411
mov ecx, ebx
sub ecx, eax
push ecx
call dword [0x47823c]
mov eax, dword [esp + 0x14]
add eax, 0x18
cmp eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
jle 0x45d386
jmp case.0x45ce46.1
mov ecx, dword [0x4937f0]
imul ecx, esi
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x30c30c31
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [0x4937f0]
imul eax, eax, 0x3f2
mov ecx, eax
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
lea edx, [edx + eax - 1]
mov dword [esp + 0x14], edx
test edx, edx
jl case.0x45ce46.1
lea ebx, [ebx]
call dword [0x4783b0]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], 0x18
cmp esi, ebx
jl 0x45d4d2
cmp esi, dword [esp + 0x50]
jg 0x45d4d2
mov eax, dword [esp + 0x34]
mov ecx, dword [0x494848]
mov edx, dword [esp + 0x28]
push 0xcc0020
push esi
push eax
push ecx
push 1
push edx
push esi
push eax
push edi
call dword [0x478060]
sub esi, 0x17
sub dword [esp + 0x18], 1
jne 0x45d4a6
mov eax, dword [esp + 0x2c]
push eax
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d4fc
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jae 0x45d517
sub ecx, eax
push ecx
call dword [0x47823c]
sub dword [esp + 0x14], 0x18
jns 0x45d490
jmp case.0x45ce46.1
push 8
lea ecx, [esp + 0x7c]
push ecx
call dword [0x4783d0]
mov edx, dword [esp + 0x78]
mov eax, dword [ebp + 0xc]
mov edi, dword [esp + 0x4c]
mov ecx, dword [0x4935ec]
mov dword [esp + 0x64], edx
cdq
and edx, 0xff
add eax, edx
sar eax, 8
mov dword [esp + 0x60], eax
lea eax, [edi + edi*2]
cdq
sub eax, edx
mov edx, dword [0x493b50]
mov esi, eax
mov eax, dword [0x4937f0]
push eax
push ecx
push 0
push 0
sar esi, 1
push 0x494df8
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x38], 1
mov dword [esp + 0x3c], 0
mov dword [esp + 0x9c], esi
call fcn.00401ee0
mov ecx, dword [0x495054]
mov eax, dword [0x493b94]
mov edx, dword [0x49488c]
mov dword [esp + 0x20], eax
mov ebx, dword [0x4937f0]
sub ebx, dword [esp + 0x5c]
mov dword [esp + 0x38], ecx
mov ecx, dword [0x4935ec]
mov dword [esp + 0x40], edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x34]
sar eax, 2
add eax, eax
add eax, eax
dec ebx
imul ebx, eax
lea edx, [edx + edx*2]
add ebx, edx
lea eax, [eax + esi*2]
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], eax
cmp edi, ecx
jne 0x45d619
mov ecx, dword [0x4937f0]
mov dword [esp + 0x18], 1
cmp dword [esp + 0x48], ecx
je 0x45d621
mov dword [esp + 0x18], 0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
call dword [0x4783b0]
xor edx, edx
cmp dword [esp + 0x28], edx
mov dword [esp + 0x1c], eax
sete dl
mov eax, edi
shl eax, 8
mov edi, 0x4a8488
sub edi, eax
cmp dword [esp + 0x18], 0
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], edi
je 0x45d6c8
mov ecx, dword [0x4937f0]
imul ecx, dword [0x4935ec]
lea ecx, [ecx + ecx*2]
cmp edx, ecx
jge 0x45d741
sub ecx, dword [esp + 0x28]
lea eax, [esi + edx]
mov edx, dword [esp + 0x40]
sub edx, esi
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x38]
dec ecx
sub edx, esi
mov esi, dword [esp + 0x44]
shr ecx, 1
inc ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x14], ecx
lea ebx, [ebx]
mov edx, dword [esp + 0x58]
movzx ecx, byte [edx + eax]
movzx edx, byte [eax]
mov cl, byte [ecx + esi + 0x498588]
add cl, byte [edx + edi]
mov edx, dword [esp + 0x68]
mov byte [edx + eax], cl
add eax, 2
sub dword [esp + 0x14], 1
jne 0x45d6a0
jmp 0x45d741
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x20]
add eax, ebx
add ecx, ebx
add esi, ebx
add eax, edx
add ecx, edx
add esi, edx
cmp dword [esp + 0x48], 0
jle 0x45d741
mov edx, dword [esp + 0x48]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x88]
test edx, edx
jle 0x45d730
mov dword [esp + 0x14], edx
movzx edx, byte [esi]
movzx ebx, byte [ecx]
mov dl, byte [edx + edi]
mov edi, dword [esp + 0x44]
add dl, byte [ebx + edi + 0x498588]
mov edi, dword [esp + 0x30]
mov byte [eax], dl
add eax, 2
add ecx, 2
add esi, 2
sub dword [esp + 0x14], 1
jne 0x45d702
mov ebx, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
sub eax, edx
sub ecx, edx
sub esi, edx
sub dword [esp + 0x3c], 1
jne 0x45d6f3
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x34]
mov edx, dword [0x495010]
push 0xcc0020
push ecx
push eax
push edx
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x60]
push edx
push ecx
push eax
mov eax, dword [esp + 0x8c]
push eax
call dword [0x478060]
mov edi, dword [esp + 0x24]
cmp edi, 0xff
je case.0x45ce46.1
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d7a1
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
mov ecx, eax
mov eax, dword [esp + 0x64]
sub ecx, dword [esp + 0x1c]
cmp eax, 9
jle 0x45d7bf
cmp ecx, eax
jne 0x45d7bf
mov ecx, 5
mov eax, ecx
shl eax, 8
xor edx, edx
div dword [ebp + 0xc]
mov esi, eax
cmp esi, 1
jae 0x45d7e6
mov eax, dword [esp + 0x60]
mov esi, 1
cmp ecx, eax
jae 0x45d7e6
sub eax, ecx
push eax
call dword [0x47823c]
add edi, esi
cmp edi, 0xff
mov dword [esp + 0x24], edi
jl 0x45d625
mov edi, 0xff
mov dword [esp + 0x24], edi
jmp 0x45d625
mov ebx, dword [0x4935ec]
mov ecx, ebx
imul ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
xor eax, eax
add esi, edx
mov edx, dword [0x4937f0]
mov dword [esp + 0x80], ebx
add ebx, 0xfffffff8
cmp ebx, eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x84], edx
jl case.0x45ce46.1
lea esp, [esp]
call dword [0x4783b0]
push 0
push 0
mov dword [esp + 0x24], eax
lea eax, [esp + 0x80]
push eax
mov ecx, eax
push ecx
push 0
push 8
push edi
call dword [0x47836c]
mov edx, dword [0x494848]
mov eax, dword [0x4937f0]
push 0xcc0020
push 0
push ebx
push edx
push eax
push 8
push 0
push 0
push edi
call dword [0x478060]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d8c6
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
cmp eax, esi
jae 0x45d8df
mov edx, esi
sub edx, eax
push edx
call dword [0x47823c]
sub ebx, 8
jns 0x45d860
jmp case.0x45ce46.1
mov ecx, dword [0x4935ec]
imul ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
mov eax, dword [0x4935ec]
mov ecx, dword [0x4937f0]
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
xor esi, esi
mov dword [esp + 0x80], eax
add eax, 0xfffffff9
add ebx, edx
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x84], ecx
test eax, eax
jle case.0x45ce46.1
call dword [0x4783b0]
push 0
push 0
lea edx, [esp + 0x80]
push edx
mov dword [esp + 0x28], eax
mov eax, edx
push eax
push 0
push 0xfffffffffffffff8
push edi
call dword [0x47836c]
mov ecx, dword [0x494848]
mov edx, dword [0x4937f0]
mov eax, dword [0x4935ec]
push 0xcc0020
push 0
push esi
push ecx
push edx
push 8
push 0
add eax, 0xfffffff8
push eax
push edi
call dword [0x478060]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45d9b4
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
cmp eax, ebx
jae 0x45d9cd
mov edx, ebx
sub edx, eax
push edx
call dword [0x47823c]
mov eax, dword [0x4935ec]
add esi, 8
add eax, 0xfffffff9
cmp esi, eax
jl 0x45d946
jmp case.0x45ce46.1
mov ebx, dword [0x4937f0]
mov ecx, ebx
imul ecx, esi
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
mov ecx, dword [0x4935ec]
sar edx, 5
mov esi, edx
shr esi, 0x1f
xor eax, eax
mov dword [esp + 0x84], ebx
add ebx, 0xfffffffa
add esi, edx
cmp ebx, eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], ecx
jl case.0x45ce46.1
lea ecx, [ecx]
call dword [0x4783b0]
push 0
push 0
lea edx, [esp + 0x80]
push edx
mov dword [esp + 0x28], eax
mov eax, edx
push eax
push 6
push 0
push edi
call dword [0x47836c]
mov ecx, dword [0x494848]
mov edx, dword [0x4935ec]
push 0xcc0020
push ebx
push 0
push ecx
push 6
push edx
push 0
push 0
push edi
call dword [0x478060]
mov eax, dword [esp + 0x2c]
push eax
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45daa7
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
cmp eax, esi
jae 0x45dac0
mov ecx, esi
sub ecx, eax
push ecx
call dword [0x47823c]
sub ebx, 6
jns 0x45da40
jmp case.0x45ce46.1
mov ecx, dword [0x4937f0]
imul ecx, esi
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
mov eax, dword [0x4937f0]
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov edx, dword [0x4935ec]
xor esi, esi
mov dword [esp + 0x84], eax
add eax, 0xfffffffa
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], edx
js case.0x45ce46.1
call dword [0x4783b0]
push 0
push 0
mov dword [esp + 0x24], eax
lea eax, [esp + 0x80]
push eax
mov ecx, eax
push ecx
push 0xfffffffffffffffa
push 0
push edi
call dword [0x47836c]
mov edx, dword [0x494848]
mov eax, dword [0x4935ec]
mov ecx, dword [0x4937f0]
push 0xcc0020
push esi
push 0
push edx
push 6
push eax
add ecx, 0xfffffffa
push ecx
push 0
push edi
call dword [0x478060]
mov edx, dword [esp + 0x2c]
push edx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45db95
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
cmp eax, ebx
jae 0x45dbae
mov ecx, ebx
sub ecx, eax
push ecx
call dword [0x47823c]
mov edx, dword [0x4937f0]
add esi, 6
add edx, 0xfffffffa
cmp esi, edx
jle 0x45db27
jmp case.0x45ce46.1
lea ecx, [esp + 0x8c]
call fcn.00401050
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x90]
push ecx
mov ecx, dword [esp + 0x34]
xor edi, edi
mov dword [esp + 0x340], edi
call fcn.00401f90
lea ecx, [esp + 0x8c]
mov dword [esp + 0x304], 3
call fcn.00401f70
cmp dword [0x4935ec], edi
mov edx, dword [esp + 0x2f4]
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], edx
jle 0x45dc8c
mov eax, dword [0x4937f0]
xor esi, esi
test eax, eax
jle 0x45dc80
mov ebx, dword [0x478060]
mov eax, dword [esp + 0x2f0]
cdq
idiv dword [esp + 0x310]
cmp dword [esp + 0x304], 1
jne 0x45dc4f
cdq
sub eax, edx
sar eax, 1
mov ecx, dword [esp + 0x2a4]
mov edx, dword [esp + 0x2f4]
push 0xcc0020
push 0
push 0
push ecx
push edx
push eax
mov eax, dword [0x495010]
push esi
push edi
push eax
call ebx
add esi, dword [esp + 0x60]
mov eax, dword [0x4937f0]
cmp esi, eax
jl 0x45dc31
add edi, dword [esp + 0x64]
cmp edi, dword [0x4935ec]
jl 0x45dc25
lea ecx, [esp + 0x8c]
call fcn.004010b0
mov eax, dword [ebp + 0xc]
mov ecx, dword [0x49488c]
cdq
and edx, 0xff
add eax, edx
mov edx, dword [0x495054]
mov ebx, eax
mov eax, dword [0x493b94]
mov esi, dword [0x4937f0]
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], ecx
mov ecx, dword [0x4935ec]
mov dword [esp + 0x38], edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x34]
sar eax, 2
mov edi, esi
sub edi, dword [esp + 0x5c]
add eax, eax
dec edi
add eax, eax
imul edi, eax
sar ebx, 8
lea edx, [edx + edx*2]
add edi, edx
cmp ebx, 1
mov dword [esp + 0x28], 1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], ebx
jge 0x45dd25
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x4c]
lea ebx, [eax + edx*2]
add ebx, edx
mov dword [esp + 0x18], ebx
cmp edx, ecx
jne 0x45dd44
mov dword [esp + 0x3c], 1
cmp dword [esp + 0x48], esi
je 0x45dd50
mov dword [esp + 0x3c], 0
lea esp, [esp]
call dword [0x4783b0]
cmp dword [esp + 0x3c], 0
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x44]
je 0x45ddc9
mov edx, dword [0x4937f0]
imul edx, dword [0x4935ec]
test edx, edx
jle 0x45de35
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x28]
lea ebx, [ebx]
movzx ebx, byte [esi]
cmp ebx, edx
jg 0x45ddb3
movzx ebx, byte [ecx]
mov byte [eax], bl
movzx ebx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], bl
movzx ebx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], bl
inc eax
inc ecx
mov byte [esi], 0xff
jmp 0x45ddb9
add eax, 3
add ecx, 3
add esi, 3
sub dword [esp + 0x30], 1
jne 0x45dd90
mov ebx, dword [esp + 0x18]
jmp 0x45de35
add eax, edi
add ecx, edi
cmp dword [esp + 0x48], 0
mov edx, esi
lea esi, [edi + edx]
jle 0x45de35
mov edx, dword [esp + 0x48]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x4c]
test edx, edx
jle 0x45de28
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x28]
movzx ebx, byte [esi]
cmp ebx, edx
jg 0x45de14
movzx ebx, byte [ecx]
mov byte [eax], bl
movzx ebx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], bl
movzx ebx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], bl
inc eax
inc ecx
mov byte [esi], 0xff
jmp 0x45de1a
add eax, 3
add ecx, 3
add esi, 3
sub dword [esp + 0x30], 1
jne 0x45ddf1
mov ebx, dword [esp + 0x18]
sub eax, ebx
sub ecx, ebx
sub esi, ebx
sub dword [esp + 0x24], 1
jne 0x45dde1
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x34]
mov edx, dword [0x493b50]
push 0xcc0020
push ecx
push eax
push edx
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x60]
push edx
push ecx
push eax
mov eax, dword [esp + 0x8c]
push eax
call dword [0x478060]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45de85
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
mov ecx, eax
sub ecx, dword [esp + 0x1c]
xor edx, edx
mov eax, ecx
div dword [esp + 0x20]
mov esi, eax
cmp esi, 1
jae 0x45deb8
mov esi, 1
cmp ecx, dword [esp + 0x14]
jae 0x45deb8
mov edx, dword [esp + 0x14]
sub edx, ecx
push edx
call dword [0x47823c]
mov eax, dword [esp + 0x28]
add eax, esi
cmp eax, 0xff
mov dword [esp + 0x28], eax
jl 0x45dd50
jmp case.0x45ce46.1
mov ecx, dword [0x4935ec]
mov eax, 0x66666667
imul esi
sar edx, 2
mov edi, edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
shr edi, 0x1f
add edi, edx
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
cdq
and edx, 3
add eax, edx
mov edx, dword [0x493b50]
sar eax, 2
add eax, eax
add eax, eax
mov dword [esp + 0x60], eax
mov eax, dword [0x4937f0]
push eax
push ecx
push 0
push 0
push 0x494df8
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x4c], edi
call fcn.00401ee0
cmp dword [0x4935ec], 0x280
mov ecx, dword [0x495054]
mov esi, dword [0x493b94]
mov dword [esp + 0x3c], ecx
jl 0x45df59
mov dword [esp + 0x54], 0xa0
jmp 0x45df68
lea edx, [edi + edi]
mov dword [esp + 0x54], 0x50
mov dword [esp + 0x38], edx
mov edi, 5
cmp dword [esp + 0x54], edi
mov dword [esp + 0x50], edi
jl 0x45e14d
mov eax, dword [esp + 0x60]
mov edx, dword [0x4935ec]
mov ebx, edi
imul ebx, eax
lea ecx, [edi + edi*2]
lea edx, [edx + edx*2]
sub ebx, edx
sub eax, ecx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x88], eax
call dword [0x4783b0]
mov dword [esp + 0x1c], eax
mov eax, dword [0x4937f0]
xor ecx, ecx
cmp eax, ecx
mov dword [esp + 0x18], ecx
jle 0x45e0c7
mov edx, edi
neg edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], eax
mov edx, ecx
mov edi, edi
add edx, edi
cmp edx, eax
mov dword [esp + 0x5c], edx
jl 0x45dfe4
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], eax
jmp 0x45dfe8
mov dword [esp + 0x30], edi
mov edx, dword [0x4935ec]
xor eax, eax
test edx, edx
jle 0x45e0a6
mov dword [esp + 0x28], edx
lea esp, [esp]
add eax, edi
cmp eax, edx
mov dword [esp + 0x58], eax
jle 0x45e014
mov edx, dword [esp + 0x28]
mov dword [esp + 0x18], edx
jmp 0x45e018
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x3c]
movzx edx, byte [edi + ecx]
movzx edi, byte [edi + ecx + 1]
mov ebx, dword [esp + 0x64]
mov eax, ecx
inc ecx
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x3c]
movzx edi, byte [edi + ecx + 1]
inc ecx
add ebx, 0xfffffffe
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x30]
add ecx, ebx
test edi, edi
jle 0x45e084
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x18]
test edi, edi
jle 0x45e076
movzx ebx, byte [esp + 0x74]
mov byte [eax + esi], dl
inc eax
mov byte [eax + esi], bl
movzx ebx, byte [esp + 0x70]
inc eax
mov byte [eax + esi], bl
inc eax
sub edi, 1
jne 0x45e057
mov edi, dword [esp + 0x18]
add eax, dword [esp + 0x88]
sub dword [esp + 0x44], 1
jne 0x45e053
mov edx, dword [esp + 0x40]
add dword [esp + 0x28], edx
mov eax, dword [esp + 0x58]
mov edx, dword [0x4935ec]
cmp eax, edx
mov edi, dword [esp + 0x50]
jl 0x45e000
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x40]
add dword [esp + 0x24], edx
mov edx, eax
mov dword [esp + 0x18], eax
mov eax, dword [0x4937f0]
add ecx, ebx
cmp edx, eax
jl 0x45dfd0
mov ecx, dword [0x493b50]
mov edx, dword [0x4935ec]
push 0xcc0020
push 0
push 0
push ecx
push eax
mov eax, dword [esp + 0x80]
push edx
push 0
push 0
push eax
call dword [0x478060]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45e10d
cmp byte [0x4933e4], 0
jne 0x45e13a
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
cmp eax, ecx
jae 0x45e128
sub ecx, eax
push ecx
call dword [0x47823c]
add edi, edi
cmp edi, dword [esp + 0x54]
mov dword [esp + 0x50], edi
jle 0x45df7b
jmp 0x45e14d
cmp byte [0x541540], 0
je 0x45e14d
mov dword [0x58cae8], 1
cmp dword [ebp + 8], 1
je 0x45e160
mov edx, dword [0x493910]
push edx
call dword [0x47823c]
mov eax, dword [0x4937f0]
mov edx, dword [0x4935ec]
push eax
xor ebx, ebx
xor ecx, ecx
call fcn.0044cc60
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x30]
mov eax, dword [edx + 0x10]
add esp, 4
push ecx
push eax
call dword [0x4782a0]
jmp 0x45eb7b
mov ecx, dword [0x4935ec]
mov edi, dword [0x4937f0]
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x5c], eax
lea edx, [ecx - 1]
mov dword [esp + 0x54], edx
lea eax, [edi - 1]
mov dword [esp + 0x50], eax
mov eax, 0x66666667
imul esi
sar edx, 2
mov ebx, edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
shr ebx, 0x1f
add ebx, edx
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
cdq
and edx, 3
add eax, edx
mov edx, dword [0x493b50]
push edi
sar eax, 2
push ecx
add eax, eax
push 0
add eax, eax
push 0
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x70], eax
push 0x494df8
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x4c], ebx
call fcn.00401ee0
mov ecx, dword [0x49488c]
mov esi, dword [0x493b94]
mov dword [esp + 0x3c], ecx
mov ecx, dword [0x4935ec]
cmp ecx, 0x280
jl 0x45e237
mov edi, 0xa0
jmp 0x45e243
lea edx, [ebx + ebx]
mov edi, 0x50
mov dword [esp + 0x38], edx
cmp edi, 5
mov dword [esp + 0x20], edi
jl case.0x45ce46.1
jmp 0x45e258
mov ecx, dword [0x4935ec]
mov eax, dword [esp + 0x60]
mov ebx, edi
imul ebx, eax
lea edx, [edi + edi*2]
lea ecx, [ecx + ecx*2]
sub ebx, ecx
sub eax, edx
mov dword [esp + 0x64], edx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x88], eax
call dword [0x4783b0]
mov dword [esp + 0x1c], eax
mov eax, dword [0x4937f0]
xor ecx, ecx
cmp eax, ecx
mov dword [esp + 0x18], ecx
jle 0x45e3a0
mov edx, edi
neg edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], eax
mov edx, ecx
add edx, edi
cmp edx, eax
mov dword [esp + 0x14], edx
jl 0x45e2b9
mov edx, dword [esp + 0x24]
mov dword [esp + 0x30], edx
jmp 0x45e2bd
mov dword [esp + 0x30], edi
mov edx, dword [0x4935ec]
xor eax, eax
test edx, edx
jle 0x45e37f
mov dword [esp + 0x28], edx
add eax, edi
cmp eax, edx
mov dword [esp + 0x58], eax
jle 0x45e2e5
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
jmp 0x45e2e9
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x3c]
movzx edx, byte [edi + ecx]
movzx edi, byte [edi + ecx + 1]
mov ebx, dword [esp + 0x64]
mov eax, ecx
inc ecx
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x3c]
movzx edi, byte [edi + ecx + 1]
inc ecx
add ebx, 0xfffffffe
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x30]
add ecx, ebx
test edi, edi
jle 0x45e35d
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x18]
test edi, edi
jle 0x45e34f
jmp 0x45e330
movzx ebx, byte [esp + 0x74]
mov byte [eax + esi], dl
inc eax
mov byte [eax + esi], bl
movzx ebx, byte [esp + 0x70]
inc eax
mov byte [eax + esi], bl
inc eax
sub edi, 1
jne 0x45e330
mov edi, dword [esp + 0x18]
add eax, dword [esp + 0x88]
sub dword [esp + 0x44], 1
jne 0x45e324
mov edx, dword [esp + 0x40]
add dword [esp + 0x28], edx
mov eax, dword [esp + 0x58]
mov edx, dword [0x4935ec]
cmp eax, edx
mov edi, dword [esp + 0x20]
jl 0x45e2d1
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x40]
add dword [esp + 0x24], edx
mov edx, eax
mov dword [esp + 0x18], eax
mov eax, dword [0x4937f0]
add ecx, ebx
cmp edx, eax
jl 0x45e2a5
mov ecx, dword [0x493b50]
mov edx, dword [0x4935ec]
push 0xcc0020
push 0
push 0
push ecx
push eax
mov eax, dword [esp + 0x80]
push edx
push 0
push 0
push eax
call dword [0x478060]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45e3ea
cmp byte [0x4933e4], 0
jne 0x45cef5
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
cmp eax, ecx
jae 0x45e405
sub ecx, eax
push ecx
call dword [0x47823c]
sar edi, 1
cmp edi, 5
mov dword [esp + 0x20], edi
jge 0x45e252
jmp case.0x45ce46.1
lea ecx, [esp + 0x8c]
call fcn.00401050
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
push edx
lea eax, [esp + 0x90]
push eax
mov dword [esp + 0x340], 1
call fcn.00401f90
lea ecx, [esp + 0x8c]
mov dword [esp + 0x304], 3
call fcn.00401f70
mov ecx, dword [esp + 0x2f4]
xor edi, edi
cmp dword [0x4935ec], edi
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], ecx
jle 0x45e4e8
mov eax, dword [0x4937f0]
jmp 0x45e480
xor esi, esi
test eax, eax
jle 0x45e4dc
mov ebx, dword [0x478060]
mov eax, dword [esp + 0x2f0]
cdq
idiv dword [esp + 0x310]
cmp dword [esp + 0x304], 1
jne 0x45e4aa
cdq
sub eax, edx
sar eax, 1
mov edx, dword [esp + 0x2a4]
mov ecx, dword [esp + 0x2f4]
push 0xcc0020
push 0
push 0
push edx
mov edx, dword [0x495010]
push ecx
push eax
push esi
push edi
push edx
call ebx
add esi, dword [esp + 0x60]
mov eax, dword [0x4937f0]
cmp esi, eax
jl 0x45e48c
add edi, dword [esp + 0x64]
cmp edi, dword [0x4935ec]
jl 0x45e480
lea ecx, [esp + 0x8c]
call fcn.004010b0
lea ecx, [esp + 0x8c]
call fcn.00401050
mov dword [esp + 0x338], 2
mov eax, dword [0x4937f0]
imul eax, dword [0x4935ec]
push eax
call fcn.00407e31
mov esi, dword [0x4937f0]
mov edi, dword [0x4935ec]
mov ecx, eax
mov eax, esi
imul eax, edi
add esp, 4
mov dword [esp + 0x58], ecx
test eax, eax
jle 0x45e547
push eax
push 0
push ecx
call fcn.00411230
add esp, 0xc
push esi
push edi
lea eax, [esp + 0x94]
call fcn.004023f0
mov ecx, dword [0x493b50]
mov edx, dword [0x4937f0]
mov eax, dword [0x4935ec]
push 0xcc0020
push 0
push 0
push ecx
mov ecx, dword [esp + 0x2b4]
push edx
push eax
push 0
push 0
push ecx
call dword [0x478060]
mov eax, dword [ebp + 0xc]
mov ecx, dword [0x493b94]
cdq
and edx, 0x1ff
add eax, edx
mov edx, dword [0x49488c]
sar eax, 9
mov dword [esp + 0x64], eax
mov eax, dword [0x495054]
mov dword [esp + 0x38], eax
mov dword [esp + 0x44], ecx
mov ecx, dword [0x4935ec]
mov dword [esp + 0x40], edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
mov edi, dword [esp + 0x34]
add eax, 3
cdq
mov esi, dword [esp + 0x2e8]
and edx, 3
add eax, edx
mov edx, dword [0x4937f0]
sar eax, 2
add eax, eax
mov ebx, edx
sub ebx, dword [esp + 0x5c]
add eax, eax
dec ebx
imul ebx, eax
lea edi, [edi + edi*2]
add ebx, edi
mov edi, dword [esp + 0x4c]
lea eax, [eax + edi*2]
add eax, edi
mov dword [esp + 0x18], 1
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], ebx
mov dword [esp + 0x60], eax
cmp edi, ecx
jne 0x45e62c
mov dword [esp + 0x3c], 1
cmp dword [esp + 0x48], edx
je 0x45e634
mov dword [esp + 0x3c], 0
mov edi, dword [0x4783b0]
lea ebx, [ebx]
call edi
cmp dword [esp + 0x3c], 0
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x58]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], edi
je 0x45e760
mov edx, dword [0x4937f0]
imul edx, dword [0x4935ec]
test edx, edx
jle 0x45e87a
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x14]
movzx ebx, byte [edx]
mov edx, dword [esp + 0x18]
sub edx, ebx
cmp byte [edi], 1
je 0x45e73d
cmp edx, 0xfe
jle 0x45e6bf
movzx edx, byte [ecx]
mov byte [eax], dl
movzx edx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], dl
movzx edx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], dl
inc eax
inc ecx
mov byte [edi], 1
jmp 0x45e743
lea ebx, [edx - 1]
cmp ebx, 0xfd
ja 0x45e73d
movzx ebx, byte [ecx]
shl edx, 8
mov dword [esp + 0x20], edx
mov edi, 0x4a8488
sub edi, edx
movzx edx, byte [esi]
movzx edx, byte [edx + edi]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x20]
add dl, byte [ebx + edi + 0x498588]
mov ebx, dword [esp + 0x24]
mov byte [eax], dl
movzx edx, byte [esi + 1]
movzx edx, byte [edx + ebx]
movzx edi, byte [ecx + 1]
mov ebx, dword [esp + 0x20]
add dl, byte [edi + ebx + 0x498588]
mov ebx, dword [esp + 0x24]
inc esi
inc ecx
mov byte [eax + 1], dl
movzx edx, byte [esi + 1]
movzx edi, byte [ecx + 1]
movzx edx, byte [edx + ebx]
mov ebx, dword [esp + 0x20]
add dl, byte [edi + ebx + 0x498588]
mov edi, dword [esp + 0x28]
inc eax
inc esi
inc ecx
inc eax
mov byte [eax], dl
inc eax
inc esi
inc ecx
jmp 0x45e746
add eax, 3
add ecx, 3
add esi, 3
add dword [esp + 0x14], 3
inc edi
sub dword [esp + 0x30], 1
mov dword [esp + 0x28], edi
jne 0x45e682
jmp 0x45e87a
add eax, ebx
add ecx, ebx
add esi, ebx
add ebx, edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x14], ebx
test edx, edx
jle 0x45e87a
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x4c]
test edx, edx
jle 0x45e85f
mov dword [esp + 0x30], edx
lea esp, [esp]
movzx ebx, byte [ebx]
mov edx, dword [esp + 0x18]
sub edx, ebx
cmp byte [edi], 1
je 0x45e83b
cmp edx, 0xfe
jle 0x45e7c6
movzx edx, byte [ecx]
mov byte [eax], dl
movzx edx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], dl
movzx edx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], dl
inc eax
inc ecx
mov byte [edi], 1
jmp 0x45e841
ja 0x45e83b
movzx ebx, byte [ecx]
shl edx, 8
mov dword [esp + 0x20], edx
mov edi, 0x4a8488
sub edi, edx
movzx edx, byte [esi]
movzx edx, byte [edx + edi]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x20]
add dl, byte [ebx + edi + 0x498588]
mov ebx, dword [esp + 0x24]
mov byte [eax], dl
movzx edx, byte [esi + 1]
movzx edx, byte [edx + ebx]
movzx edi, byte [ecx + 1]
mov ebx, dword [esp + 0x20]
add dl, byte [edi + ebx + 0x498588]
mov ebx, dword [esp + 0x24]
inc esi
inc ecx
mov byte [eax + 1], dl
movzx edx, byte [esi + 1]
movzx edi, byte [ecx + 1]
movzx edx, byte [edx + ebx]
mov ebx, dword [esp + 0x20]
add dl, byte [edi + ebx + 0x498588]
mov edi, dword [esp + 0x28]
inc eax
inc esi
inc ecx
inc eax
mov byte [eax], dl
inc eax
inc esi
inc ecx
jmp 0x45e844
add eax, 3
add ecx, 3
add esi, 3
mov ebx, dword [esp + 0x14]
add ebx, 3
inc edi
sub dword [esp + 0x30], 1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], edi
jne 0x45e790
mov edx, dword [esp + 0x60]
sub ebx, edx
sub eax, edx
sub ecx, edx
sub esi, edx
sub dword [esp + 0x68], 1
mov dword [esp + 0x14], ebx
jne 0x45e77c
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x34]
mov edx, dword [0x493b50]
push 0xcc0020
push ecx
push eax
push edx
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x60]
push edx
push ecx
push eax
mov eax, dword [esp + 0x8c]
push eax
call dword [0x478060]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45e8c6
cmp byte [0x4933e4], 0
jne 0x45e919
mov edi, dword [0x4783b0]
call edi
mov ecx, eax
sub ecx, dword [esp + 0x1c]
xor edx, edx
mov eax, ecx
shl eax, 9
div dword [ebp + 0xc]
mov esi, eax
cmp esi, 1
jae 0x45e8fb
mov eax, dword [esp + 0x64]
mov esi, 1
cmp ecx, eax
jae 0x45e8fb
sub eax, ecx
push eax
call dword [0x47823c]
mov eax, dword [esp + 0x18]
add eax, esi
cmp eax, 0x200
mov dword [esp + 0x18], eax
jge 0x45e92c
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
jmp 0x45e640
cmp byte [0x541540], 0
je 0x45e92c
mov dword [0x58cae8], 1
mov edx, dword [esp + 0x58]
push edx
call fcn.0040802e
add esp, 4
lea eax, [esp + 0x8c]
call fcn.00401150
cmp dword [esp + 0x2e0], 0
je case.0x45ce46.1
mov eax, dword [esp + 0x2ec]
push eax
call dword [0x47806c]
mov ecx, dword [esp + 0x2e0]
push ecx
call fcn.00407edf
add esp, 4
jmp case.0x45ce46.1
mov eax, 0x66666667
imul esi
mov eax, dword [0x4935ec]
sar edx, 2
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov edx, dword [0x4937f0]
push edx
mov edx, dword [0x493b50]
push eax
push 0
push 0
push 0x494df8
xor eax, eax
xor ecx, ecx
call fcn.00401ee0
mov dword [esp + 0x58], 0xa
call dword [0x4783b0]
xor esi, esi
cmp dword [0x4937f0], esi
mov dword [esp + 0x1c], eax
jle 0x45ea0a
jmp 0x45e9d0
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004027b0
cmp dword [0x58cae8], 0
je 0x45e9ec
cmp byte [0x4933e4], 0
jne 0x45e9f7
inc esi
cmp esi, dword [0x4937f0]
jl 0x45e9d0
jmp 0x45ea0a
cmp byte [0x541540], 0
je 0x45ea0a
mov dword [0x58cae8], 1
mov edx, dword [0x493b50]
mov eax, dword [0x4937f0]
mov ecx, dword [0x4935ec]
mov esi, dword [0x478060]
push 0xcc0020
push 0
push 0
push edx
push eax
push ecx
push 0
push 0
push edi
call esi
mov edx, dword [0x493b50]
mov eax, dword [0x4937f0]
mov ecx, dword [0x4935ec]
push 0xcc0020
push 0
push 0
push edx
mov edx, dword [0x495010]
push eax
push ecx
push 0
push 0
push edx
call esi
call dword [0x4783b0]
sub eax, dword [esp + 0x1c]
cmp eax, ebx
jae 0x45ea77
mov ecx, ebx
sub ecx, eax
push ecx
call dword [0x47823c]
sub dword [esp + 0x58], 1
jne 0x45e9b4
mov edx, dword [0x493910]
push edx
call dword [0x47823c]
mov eax, dword [0x4937f0]
mov edx, dword [0x4935ec]
push eax
xor ebx, ebx
xor ecx, ecx
call fcn.0044cc60
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + 0x10]
add esp, 4
push edi
push edx
call dword [0x4782a0]
jmp 0x45eb7b
push 0x484d68
push 0x484da8
call fcn.00456ce0
add esp, 8
mov eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x10]
push eax
push ecx
call dword [0x4782a0]
cmp byte [0x541540], 0
jne 0x45eaf3
mov dword [0x58cae8], 0
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x34]
mov edx, dword [0x494848]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
push 0xcc0020
push edi
push esi
push edx
mov edx, dword [0x493b50]
push eax
push ecx
push edi
push esi
push edx
call dword [0x478060]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x50]
inc eax
push 0
lea edx, [esp + 0x7c]
mov dword [esp + 0x84], eax
mov eax, dword [ebx + 0x10]
push edx
inc ecx
push eax
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], edi
mov dword [esp + 0x90], ecx
call dword [0x4782bc]
mov ecx, dword [0x497b6c]
mov edx, dword [ecx + 0x10]
push edx
call dword [0x478298]
cmp dword [ebp + 8], 1
je 0x45eb7b
mov eax, dword [0x493910]
push eax
call dword [0x47823c]
mov ecx, dword [esp + 0x330]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x318]
xor ecx, esp
call fcn.00407ed0
mov esp, ebp
pop ebp
ret 0xc