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

Disassembly:
sub esp, 0xd8
push ebp
mov ebp, ecx
mov eax, dword [ebp + 0x228]
test eax, eax
mov dword [esp + 0x2c], ebp
je 0x452ba2
mov eax, dword [esp + 0x100]
test eax, eax
jle 0x452ba2
cmp eax, 0xff
jg 0x452ba2
push edi
mov edi, dword [esp + 0xec]
mov edx, dword [edi + 0x228]
test edx, edx
jne 0x45193c
mov eax, dword [edi + 0x78]
jmp 0x451942
mov eax, dword [edi + 0x1c0]
mov ecx, dword [esp + 0xf0]
push esi
mov esi, dword [esp + 0xfc]
add esi, ecx
cmp eax, esi
jge 0x45196f
test edx, edx
jne 0x451960
mov eax, dword [edi + 0x78]
jmp 0x451966
mov eax, dword [edi + 0x1c0]
sub eax, ecx
mov dword [esp + 0xfc], eax
test edx, edx
jne 0x451978
mov eax, dword [edi + 0x7c]
jmp 0x45197e
mov eax, dword [edi + 0x1bc]
mov ecx, dword [esp + 0xf8]
mov esi, dword [esp + 0x100]
add esi, ecx
cmp eax, esi
jge 0x4519aa
test edx, edx
jne 0x45199b
mov eax, dword [edi + 0x7c]
jmp 0x4519a1
mov eax, dword [edi + 0x1bc]
sub eax, ecx
mov dword [esp + 0x100], eax
fild dword [esp + 0x104]
push ebx
fmul dword [0x4a1130]
fstp dword [esp + 0x28]
fild dword [esp + 0x100]
fmul dword [esp + 0x28]
call fcn.0047ba80
fild dword [esp + 0x104]
mov esi, eax
fmul dword [esp + 0x28]
call fcn.0047ba80
test esi, esi
mov ebx, eax
jne 0x4519f6
pop ebx
pop esi
pop edi
mov eax, 1
pop ebp
add esp, 0xd8
ret 0x28
test ebx, ebx
jne 0x451a0c
pop ebx
pop esi
pop edi
mov eax, 2
pop ebp
add esp, 0xd8
ret 0x28
mov eax, dword [esp + 0x100]
shl eax, 0x10
xor edx, edx
div esi
xor edx, edx
mov ecx, dword [esp + 0xf0]
mov dword [esp + 0x9c], ecx
mov ecx, ebp
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x104]
shl eax, 0x10
div ebx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0x98], eax
call fcn.004017d0
mov ecx, ebp
mov dword [esp + 0xa0], eax
call fcn.004017b0
mov ecx, edi
mov dword [esp + 0xa4], eax
call fcn.004017d0
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fmul dword [esp + 0x28]
call fcn.0047ba80
mov ecx, edi
mov dword [esp + 0xa8], eax
call fcn.004017b0
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fmul dword [esp + 0x28]
call fcn.0047ba80
fild dword [esp + 0xf8]
mov edx, dword [esp + 0xec]
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xf0]
fmul dword [esp + 0x28]
mov dword [esp + 0xc8], edx
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], esi
mov dword [esp + 0xd4], ebx
call fcn.0047ba80
fild dword [esp + 0xfc]
mov dword [esp + 0xd8], eax
fmul dword [esp + 0x28]
call fcn.0047ba80
lea ecx, [esp + 0x98]
push ecx
mov ecx, ebp
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], esi
mov dword [esp + 0xe8], ebx
call fcn.0044a370
test eax, eax
jne 0x451b31
pop ebx
pop esi
pop edi
mov eax, 3
pop ebp
add esp, 0xd8
ret 0x28
mov eax, dword [esp + 0xb8]
imul eax, dword [esp + 0x70]
mov esi, dword [esp + 0xbc]
imul esi, dword [esp + 0x60]
mov ecx, ebp
mov dword [esp + 0x78], eax
call fcn.0044a870
mov ecx, edi
mov ebx, eax
call fcn.0044a870
test ebx, ebx
mov dword [esp + 0x7c], eax
je 0x4519e4
test eax, eax
je 0x4519fa
mov ecx, ebp
call fcn.00445d70
mov ecx, edi
mov dword [esp + 0x50], eax
call fcn.00445d70
mov ebp, dword [ebp + 0x228]
cmp ebp, 0x378
mov edx, dword [edi + 0x6c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x74], edx
ja 0x452800
je 0x45246b
sub ebp, 0x22b
je 0x452053
sub ebp, 0xa
jne 0x452b7e
mov ecx, dword [esp + 0xb4]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xc4]
add eax, ecx
cmp ecx, eax
jge 0x452b7e
mov edi, dword [esp + 0xb0]
mov edx, dword [esp + 0xc0]
add edx, edi
mov edi, dword [esp + 0x50]
imul edi, ecx
add edi, ebx
sub eax, ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], edi
mov dword [esp + 0x30], eax
jmp 0x451c10
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x7c]
mov ecx, dword [esp + 0xf4]
mov eax, ebx
shr eax, 0x10
mov esi, eax
imul esi, dword [esp + 0x28]
add esi, ebp
push eax
add ecx, 0x58
mov dword [esp + 0x50], esi
call fcn.0044a160
mov edx, dword [esp + 0xb0]
mov ebp, eax
mov eax, ebx
shr eax, 8
mov byte [esp + 0x11], al
cmp edx, dword [esp + 0x2c]
mov dword [esp + 0x64], ebp
mov dword [esp + 0x1c], edx
jge 0x452027
mov eax, dword [esp + 0x74]
lea ecx, [eax + ebp]
mov eax, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x54], eax
mov ecx, eax
shr ecx, 8
mov byte [esp + 0x13], cl
mov ecx, eax
shr ecx, 0x10
mov bl, byte [ecx + ebp + 1]
mov al, byte [ecx + ebp]
mov byte [esp + 0x10], bl
mov ebx, dword [esp + 0x24]
mov bl, byte [ebx + ecx]
mov byte [esp + 0x12], bl
mov ebx, dword [esp + 0x24]
movzx ebx, byte [ebx + ecx + 1]
mov dword [esp + 0x44], ebx
movzx ebx, byte [esp + 0x12]
movzx eax, al
mov dword [esp + 0x3c], ebx
movzx ebx, byte [esp + 0x10]
mov dword [esp + 0x90], eax
add eax, ebx
mov dword [esp + 0x88], ebx
add eax, dword [esp + 0x3c]
add eax, dword [esp + 0x44]
je 0x452008
movzx eax, word [edi + edx*2]
mov edx, eax
and edx, 0xf800
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov edx, eax
and eax, 0x1f
and edx, 0x7e0
mov dword [esp + 0x48], eax
movzx eax, word [esi + ecx*2]
mov edi, eax
mov dword [esp + 0x84], edx
mov edx, eax
and eax, 0x1f
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x20]
add eax, ecx
lea ebx, [esi + eax*2]
movzx eax, word [ebx]
and edi, 0x7e0
mov dword [esp + 0x40], edi
mov edi, eax
and edi, 0x7e0
and edx, 0xf800
mov dword [esp + 0x94], edi
movzx edi, word [esi + ecx*2 + 2]
mov ebp, eax
and ebp, 0xf800
and eax, 0x1f
mov ecx, edi
and ecx, 0xf800
sub ecx, edx
mov dword [esp + 0x8c], eax
movzx eax, byte [esp + 0x13]
imul ecx, eax
inc edx
imul edx, edx, 0xff
add ecx, edx
movzx edx, word [ebx + 2]
sar ecx, 8
movzx ebx, byte [esp + 0x11]
mov esi, edx
and esi, 0xf800
sub esi, ebp
imul esi, eax
inc ebp
imul ebp, ebp, 0xff
add esi, ebp
sar esi, 8
sub esi, ecx
imul esi, ebx
inc ecx
imul ecx, ecx, 0xff
add esi, ecx
mov ecx, dword [esp + 0x40]
mov ebp, edi
and ebp, 0x7e0
sub ebp, ecx
imul ebp, eax
sar esi, 8
inc ecx
imul ecx, ecx, 0xff
add ebp, ecx
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x94]
mov ecx, edx
and ecx, 0x7e0
sub ecx, ebx
imul ecx, eax
sar ebp, 8
inc ebx
imul ebx, ebx, 0xff
add ecx, ebx
mov ebx, dword [esp + 0x34]
sar ecx, 8
sub ecx, ebp
imul ecx, ebx
inc ebp
imul ebp, ebp, 0xff
add ecx, ebp
sar ecx, 8
mov ebp, dword [esp + 0x80]
and edi, 0x1f
sub edi, ebp
imul edi, eax
inc ebp
and edx, 0x1f
imul ebp, ebp, 0xff
add edi, ebp
mov ebp, dword [esp + 0x8c]
sub edx, ebp
imul edx, eax
sar edi, 8
inc ebp
imul ebp, ebp, 0xff
add edx, ebp
sar edx, 8
sub edx, edi
imul edx, ebx
inc edi
imul edi, edi, 0xff
add edx, edi
mov edi, dword [esp + 0x90]
sar edx, 8
mov ebx, edx
mov edx, dword [esp + 0x88]
sub edx, edi
imul edx, eax
mov ebp, dword [esp + 0x3c]
inc edi
imul edi, edi, 0xff
add edx, edi
sar edx, 8
movzx edi, dl
mov edx, dword [esp + 0x44]
sub edx, ebp
imul edx, eax
inc ebp
imul ebp, ebp, 0xff
add edx, ebp
sar edx, 8
movzx eax, dl
mov edx, dword [esp + 0x110]
sub eax, edi
imul eax, dword [esp + 0x34]
inc edi
imul edi, edi, 0xff
add eax, edi
mov edi, dword [esp + 0x10c]
sar eax, 8
test edx, edx
jne 0x451f34
xor edx, edx
test al, al
setne dl
movzx eax, al
add edx, eax
xor eax, eax
test edi, edi
setne al
add eax, edi
imul edx, eax
sar edx, 8
cmp dx, 0xff
jbe 0x451ecb
or dl, 0xff
mov eax, dword [esp + 0x84]
sub ecx, eax
movzx edx, dl
imul ecx, edx
inc eax
imul eax, eax, 0xff
add ecx, eax
mov eax, dword [esp + 0x48]
sub ebx, eax
sar ecx, 8
imul ebx, edx
and ecx, 0x7e0
inc eax
imul eax, eax, 0xff
mov edi, dword [esp + 0x58]
add ebx, eax
mov eax, dword [esp + 0x6c]
sub esi, eax
sar ebx, 8
imul esi, edx
mov edx, dword [esp + 0x1c]
and ebx, 0x1f
or ecx, ebx
inc eax
imul eax, eax, 0xff
add esi, eax
sar esi, 8
and esi, 0xf800
or ecx, esi
mov word [edi + edx*2], cx
jmp 0x452000
xor edx, edx
test al, al
setne dl
movzx eax, al
mov byte [esp + 0x1a], bl
mov ebx, 0xff
add edx, eax
xor eax, eax
test edi, edi
setne al
sar ecx, 5
mov byte [esp + 0x19], cl
add eax, edi
imul edx, eax
sar edx, 8
mov edi, edx
mov edx, esi
sar edx, 0xb
mov byte [esp + 0x18], dl
xor ecx, ecx
movzx edx, di
nop
movzx eax, byte [esp + ecx + 0x18]
imul eax, edx
sar eax, 8
cmp ax, bx
jbe 0x451f86
mov byte [esp + ecx + 0x14], bl
jmp 0x451f8a
mov byte [esp + ecx + 0x14], al
inc ecx
cmp ecx, 3
jl 0x451f70
mov eax, dword [esp + 0x68]
movzx edx, byte [esp + 0x15]
mov ecx, eax
shr eax, 5
and eax, 0x3f
mov esi, 0x3f
sub esi, eax
imul esi, edx
movzx dx, byte [esp + 0x14]
shl eax, 5
shr esi, 1
shr ecx, 0xb
and esi, 0xffe0
add esi, eax
mov eax, 0x1f
sub eax, ecx
imul eax, edx
movzx edx, byte [esp + 0x16]
shl ecx, 5
mov edi, dword [esp + 0x58]
and eax, 0xffe0
add eax, ecx
shl eax, 6
or esi, eax
mov eax, dword [esp + 0x48]
mov ecx, 0x1f
sub ecx, eax
imul ecx, edx
mov edx, dword [esp + 0x1c]
shr ecx, 5
add ecx, eax
or esi, ecx
mov word [edi + edx*2], si
mov ebp, dword [esp + 0x64]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x70]
mov ecx, dword [esp + 0x2c]
inc edx
add eax, ebx
cmp edx, ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x54], eax
jl 0x451c71
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x50]
add ecx, eax
mov eax, dword [esp + 0x30]
add edi, edx
dec eax
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x30], eax
jne 0x451c10
jmp 0x452b7e
mov ecx, dword [esp + 0xb4]
cdq
sub eax, edx
mov edx, dword [esp + 0xc4]
sar eax, 1
mov dword [esp + 0x68], eax
lea eax, [edx + ecx]
cmp ecx, eax
jge 0x452b7e
mov ebp, dword [esp + 0x50]
mov edx, dword [esp + 0xc0]
imul ebp, ecx
mov edi, dword [esp + 0xb0]
add edx, edi
add ebp, ebx
sub eax, ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], esi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x20], eax
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x7c]
mov eax, edi
shr eax, 0x10
mov esi, eax
imul esi, dword [esp + 0x28]
add esi, ecx
mov ecx, dword [esp + 0xf4]
push eax
add ecx, 0x58
mov dword [esp + 0x50], esi
call fcn.0044a160
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xb0]
mov ebx, edi
shr ebx, 8
cmp eax, ecx
mov byte [esp + 0x2c], bl
mov dword [esp + 0x3c], eax
jge 0x45243f
mov edi, dword [esp + 0x78]
mov dword [esp + 0x64], edi
jmp 0x452100
mov bl, byte [esp + 0x2c]
lea esp, [esp]
mov ecx, dword [esp + 0x34]
mov edx, edi
shr edi, 0x10
mov cl, byte [edi + ecx]
shr edx, 8
test cl, cl
mov byte [esp + 0x90], dl
mov dword [esp + 0x84], edi
mov byte [esp + 0x1c], cl
je 0x452420
movzx eax, word [ebp + eax*2]
mov ecx, eax
and ecx, 0x7c00
mov dword [esp + 0x80], eax
mov dword [esp + 0x8c], ecx
mov ecx, eax
and eax, 0x1f
and ecx, 0x3e0
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x68]
movzx ebx, bl
mov dword [esp + 0x88], ecx
lea ecx, [edi + eax]
lea eax, [esi + ecx*2]
movzx ecx, word [eax]
movzx eax, word [eax + 2]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ecx
movzx ecx, word [esi + edi*2]
mov dword [esp + 0x48], ecx
movzx ecx, word [esi + edi*2 + 2]
movzx ebp, dl
mov edi, 0xff
sub edi, ebx
mov ebx, dword [esp + 0x48]
and ebx, 0x7c00
mov esi, ecx
and esi, 0x7c00
imul esi, ebp
mov edx, 0xff
sub edx, ebp
imul ebx, edx
add esi, ebx
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x30], edi
and ebx, 0x7c00
imul ebx, edx
shr esi, 8
imul esi, edi
mov edi, eax
and edi, 0x7c00
imul edi, ebp
add edi, ebx
mov ebx, dword [esp + 0x48]
shr edi, 8
imul edi, dword [esp + 0x58]
add esi, edi
and ebx, 0x3e0
imul ebx, edx
mov edi, ecx
and edi, 0x3e0
imul edi, ebp
add edi, ebx
mov ebx, eax
and ebx, 0x3e0
imul ebx, ebp
mov dword [esp + 0x6c], ebp
mov ebp, dword [esp + 0x5c]
and ebp, 0x3e0
imul ebp, edx
add ebx, ebp
mov ebp, dword [esp + 0x6c]
shr ebx, 8
imul ebx, dword [esp + 0x58]
shr edi, 8
imul edi, dword [esp + 0x30]
add edi, ebx
mov ebx, dword [esp + 0x5c]
and eax, 0x1f
and ebx, 0x1f
imul eax, ebp
imul ebx, edx
add eax, ebx
mov ebx, dword [esp + 0x48]
shr eax, 8
imul eax, dword [esp + 0x58]
and ecx, 0x1f
shr esi, 8
imul ecx, ebp
shr edi, 8
and ebx, 0x1f
imul ebx, edx
mov edx, dword [esp + 0x74]
add ecx, ebx
shr ecx, 8
imul ecx, dword [esp + 0x30]
add eax, ecx
shr eax, 8
mov ebx, eax
mov eax, dword [esp + 0x34]
lea ecx, [eax + edx]
mov eax, dword [esp + 0x84]
xor edx, edx
mov dl, byte [ecx + eax + 1]
movzx ecx, byte [ecx + eax]
push 0x4b8638
push edx
mov edx, dword [esp + 0x3c]
movzx eax, byte [eax + edx + 1]
mov edx, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x28]
push eax
mov eax, dword [esp + 0xa0]
push ecx
push edx
push eax
lea ecx, [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x58]
call fcn.0044a180
mov eax, dword [esp + 0x110]
test eax, eax
mov ebp, dword [esp + 0x10c]
jne 0x452347
mov cl, byte [esp + 0x1c]
xor eax, eax
test cl, cl
setne al
movzx edx, cl
xor ecx, ecx
add eax, edx
test ebp, ebp
setne cl
add ecx, ebp
imul eax, ecx
sar eax, 8
cmp ax, 0x100
jne 0x4522f1
or al, 0xff
movzx eax, al
mov edx, eax
imul edx, edi
mov ecx, 0xff
sub ecx, eax
mov edi, ecx
imul edi, dword [esp + 0x88]
add edx, edi
mov edi, eax
imul eax, esi
imul edi, ebx
mov ebx, ecx
imul ecx, dword [esp + 0x8c]
imul ebx, dword [esp + 0x54]
add edi, ebx
shr edx, 8
add eax, ecx
shr edi, 8
and edx, 0x3e0
and edi, 0x1f
shr eax, 8
or edx, edi
and eax, 0x7c00
or edx, eax
jmp 0x45240f
mov al, byte [esp + 0x1c]
xor ecx, ecx
test al, al
setne cl
movzx edx, al
xor eax, eax
mov byte [esp + 0x1a], bl
add ecx, edx
test ebp, ebp
setne al
mov edx, edi
shr edx, 5
mov byte [esp + 0x19], dl
add eax, ebp
imul ecx, eax
sar ecx, 8
mov eax, ecx
mov ecx, esi
shr ecx, 0xa
mov byte [esp + 0x18], cl
xor ecx, ecx
movzx edx, ax
movzx eax, byte [esp + ecx + 0x18]
imul eax, edx
sar eax, 8
cmp ax, 0xff
jbe 0x45239b
mov byte [esp + ecx + 0x14], 0xff
jmp 0x45239f
mov byte [esp + ecx + 0x14], al
inc ecx
cmp ecx, 3
jl 0x452383
movzx si, byte [esp + 0x14]
mov eax, dword [esp + 0x80]
mov ecx, eax
shr ecx, 0xa
and ecx, 0x1f
mov edx, 0x1f
sub edx, ecx
imul edx, esi
movzx si, byte [esp + 0x15]
shl ecx, 5
and edx, 0xffe0
add edx, ecx
shr eax, 5
and eax, 0x1f
mov ecx, 0x1f
sub ecx, eax
imul ecx, esi
movzx esi, byte [esp + 0x16]
and ecx, 0xffe0
shl eax, 5
add ecx, eax
mov eax, dword [esp + 0x54]
shl edx, 5
or edx, ecx
mov ecx, 0x1f
sub ecx, eax
imul ecx, esi
shr ecx, 5
add ecx, eax
or edx, ecx
mov ebp, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x4c]
mov word [ebp + eax*2], dx
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x40]
inc eax
add edi, edx
cmp eax, ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x64], edi
jl 0x4520f8
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
add ebp, edx
mov edx, dword [esp + 0x60]
add ecx, edx
dec eax
mov dword [esp + 0x44], ebp
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], eax
jne 0x4520a0
jmp 0x452b7e
mov edx, dword [esp + 0xb4]
mov eax, dword [esp + 0xc4]
lea ecx, [eax + edx]
cmp edx, ecx
jge 0x452b7e
mov eax, dword [esp + 0xc0]
mov edi, dword [esp + 0xb0]
add eax, edi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x50]
imul eax, edx
add eax, ebx
sub ecx, edx
mov dword [esp + 0x48], esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], ecx
nop
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0xf4]
mov ebx, dword [esp + 0x7c]
mov eax, esi
shr eax, 0x10
mov ebp, eax
imul ebp, dword [esp + 0x28]
push eax
add ecx, 0x58
add ebp, ebx
call fcn.0044a160
mov edx, dword [esp + 0x20]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xb0]
mov ecx, esi
shr ecx, 8
cmp eax, edx
mov byte [esp + 0x24], cl
jge 0x4527d0
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xb0]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x3c], eax
lea eax, [edx + ecx*2]
lea edx, [ecx + eax + 2]
mov eax, dword [esp + 0x20]
sub eax, ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x30], eax
mov edi, edi
mov eax, dword [esp + 0x3c]
mov ebx, eax
shr eax, 8
shr ebx, 0x10
mov byte [esp + 0x44], al
mov eax, dword [esp + 0x40]
cmp byte [ebx + eax], 0
lea esi, [ebx + ebx*2]
je 0x4527a8
mov ecx, dword [esp + 0x28]
lea edi, [ecx + ebp]
xor edx, edx
mov dl, byte [esi + edi + 3]
push 0x4b8638
xor eax, eax
mov al, byte [esi + edi]
xor ecx, ecx
mov cl, byte [esi + ebp + 3]
push edx
xor edx, edx
mov dl, byte [esi + ebp]
push eax
mov eax, dword [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x54]
push edx
push eax
push ecx
mov ecx, dword [esp + 0x54]
lea edx, [esp + 0x2f]
push edx
call fcn.0044a180
xor eax, eax
mov al, byte [esi + edi + 4]
push 0x4b8638
xor ecx, ecx
mov cl, byte [esi + edi + 1]
xor edx, edx
mov dl, byte [esi + ebp + 4]
push eax
xor eax, eax
mov al, byte [esi + ebp + 1]
push ecx
mov ecx, dword [esp + 0x30]
push edx
mov edx, dword [esp + 0x54]
push eax
push ecx
mov ecx, dword [esp + 0x50]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.0044a180
xor ecx, ecx
mov cl, byte [esi + edi + 5]
push 0x4b8638
xor edx, edx
mov dl, byte [esi + edi + 2]
mov edi, dword [esp + 0x28]
xor eax, eax
mov al, byte [esi + ebp + 5]
push ecx
xor ecx, ecx
mov cl, byte [esi + ebp + 2]
mov esi, dword [esp + 0x4c]
push edx
lea edx, [esp + 0x1e]
push eax
push ecx
mov ecx, dword [esp + 0x4c]
push edi
push esi
push edx
call fcn.0044a180
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x74]
add eax, ecx
movzx ecx, byte [ebx + ecx]
xor edx, edx
mov dl, byte [ebx + eax + 1]
movzx eax, byte [ebx + eax]
push 0x4b8638
push edx
push eax
push ecx
push ecx
push edi
push esi
lea ecx, [esp + 0x2d]
push ecx
mov ecx, dword [esp + 0x58]
call fcn.0044a180
mov eax, dword [esp + 0x110]
test eax, eax
jne 0x4526cd
mov cl, byte [esp + 0x11]
xor eax, eax
test cl, cl
setne al
movzx edx, cl
mov ecx, dword [esp + 0x10c]
add eax, edx
xor edx, edx
test ecx, ecx
setne dl
add edx, ecx
imul eax, edx
sar eax, 8
cmp ax, 0x100
jne 0x45265f
or al, 0xff
movzx esi, byte [esp + 0x13]
movzx ecx, al
mov eax, dword [esp + 0x1c]
movzx edx, byte [eax - 2]
shl edx, 8
mov dl, byte [edx + ecx + 0x4d8640]
shl esi, 8
mov bl, byte [esi + ecx + 0x4c8640]
movzx esi, byte [eax - 1]
add dl, bl
mov byte [eax - 2], dl
movzx edx, byte [esp + 0x10]
shl edx, 8
mov dl, byte [edx + ecx + 0x4c8640]
shl esi, 8
mov bl, byte [esi + ecx + 0x4d8640]
movzx esi, byte [eax]
add dl, bl
mov byte [eax - 1], dl
movzx edx, byte [esp + 0x12]
shl edx, 8
mov dl, byte [edx + ecx + 0x4c8640]
shl esi, 8
add dl, byte [esi + ecx + 0x4d8640]
mov byte [eax], dl
jmp 0x4527a8
mov al, byte [esp + 0x11]
xor ecx, ecx
test al, al
setne cl
movzx edx, al
mov eax, dword [esp + 0x10c]
add ecx, edx
xor edx, edx
test eax, eax
setne dl
add edx, eax
imul ecx, edx
mov dl, byte [esp + 0x10]
sar ecx, 8
mov eax, ecx
mov cl, byte [esp + 0x13]
mov byte [esp + 0x18], cl
mov cl, byte [esp + 0x12]
mov byte [esp + 0x19], dl
mov byte [esp + 0x1a], cl
xor ecx, ecx
movzx edx, ax
movzx eax, byte [esp + ecx + 0x18]
imul eax, edx
sar eax, 8
cmp ax, 0xff
jbe 0x45272a
mov byte [esp + ecx + 0x14], 0xff
jmp 0x45272e
mov byte [esp + ecx + 0x14], al
inc ecx
cmp ecx, 3
jl 0x452712
mov ecx, dword [esp + 0x1c]
mov bl, byte [ecx - 2]
movzx edx, bl
mov eax, 0xff
sub eax, edx
movzx edx, byte [esp + 0x14]
imul eax, edx
cdq
and edx, 0xff
add eax, edx
sar eax, 8
add al, bl
mov bl, byte [ecx - 1]
mov byte [ecx - 2], al
movzx edx, bl
mov eax, 0xff
sub eax, edx
movzx edx, byte [esp + 0x15]
imul eax, edx
cdq
and edx, 0xff
add eax, edx
sar eax, 8
add al, bl
mov bl, byte [ecx]
mov byte [ecx - 1], al
movzx edx, bl
mov eax, 0xff
sub eax, edx
movzx edx, byte [esp + 0x16]
imul eax, edx
cdq
and edx, 0xff
add eax, edx
sar eax, 8
add al, bl
mov byte [ecx], al
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x30]
add edx, 3
dec eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x30], eax
jne 0x452520
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
add edx, ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x60]
add ecx, edx
dec eax
mov dword [esp + 0x48], ecx
mov dword [esp + 0x2c], eax
jne 0x4524b0
jmp 0x452b7e
cmp ebp, 0x22b8
jne 0x452b7e
mov ecx, dword [esp + 0xb4]
mov eax, dword [esp + 0xc4]
add eax, ecx
cmp ecx, eax
jge 0x452b7e
mov edi, dword [esp + 0xb0]
mov edx, dword [esp + 0xc0]
add edx, edi
mov edi, esi
mov esi, dword [esp + 0x50]
imul esi, ecx
add esi, ebx
sub eax, ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x54], edi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0xf4]
mov ebx, dword [esp + 0x7c]
mov eax, edi
shr eax, 0x10
mov ebp, eax
imul ebp, dword [esp + 0x28]
push eax
add ecx, 0x58
add ebp, ebx
call fcn.0044a160
mov edx, dword [esp + 0xb0]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x20], eax
mov eax, edi
shr eax, 8
cmp edx, ecx
mov byte [esp + 0x24], al
jge 0x452b5b
mov eax, dword [esp + 0x78]
lea esi, [esi + edx*4 + 2]
sub ecx, edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x30], ecx
lea esp, [esp]
mov ecx, dword [esp + 0x20]
mov esi, eax
shr eax, 8
shr esi, 0x10
mov byte [esp + 0x6c], al
cmp byte [esi + ecx], 0
je 0x452b2b
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x6c]
lea edi, [edx + ebp]
xor eax, eax
mov al, byte [edi + esi*4 + 4]
push 0x4b8638
xor ecx, ecx
mov cl, byte [edi + esi*4]
xor edx, edx
mov dl, byte [ebp + esi*4 + 4]
push eax
xor eax, eax
mov al, byte [ebp + esi*4]
push ecx
mov ecx, dword [esp + 0x30]
push edx
lea edx, [esp + 0x20]
push eax
push ecx
mov ecx, dword [esp + 0x50]
push ebx
push edx
call fcn.0044a180
xor eax, eax
mov al, byte [edi + esi*4 + 5]
push 0x4b8638
xor ecx, ecx
mov cl, byte [edi + esi*4 + 1]
xor edx, edx
mov dl, byte [ebp + esi*4 + 5]
push eax
xor eax, eax
mov al, byte [ebp + esi*4 + 1]
push ecx
mov ecx, dword [esp + 0x30]
push edx
lea edx, [esp + 0x23]
push eax
push ecx
mov ecx, dword [esp + 0x50]
push ebx
push edx
call fcn.0044a180
xor eax, eax
mov al, byte [edi + esi*4 + 6]
push 0x4b8638
xor ecx, ecx
mov cl, byte [edi + esi*4 + 2]
mov edi, dword [esp + 0x28]
xor edx, edx
mov dl, byte [ebp + esi*4 + 6]
push eax
xor eax, eax
mov al, byte [ebp + esi*4 + 2]
push ecx
lea ecx, [esp + 0x1d]
push edx
push eax
push edi
push ebx
push ecx
mov ecx, dword [esp + 0x58]
call fcn.0044a180
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x74]
lea eax, [ecx + edx]
movzx ecx, byte [esi + ecx]
xor edx, edx
mov dl, byte [esi + eax + 1]
movzx eax, byte [esi + eax]
push 0x4b8638
push edx
push eax
push ecx
push ecx
push edi
push ebx
lea ecx, [esp + 0x2e]
push ecx
mov ecx, dword [esp + 0x58]
call fcn.0044a180
mov eax, dword [esp + 0x110]
test eax, eax
jne 0x452a50
mov cl, byte [esp + 0x12]
xor eax, eax
test cl, cl
setne al
movzx edx, cl
mov ecx, dword [esp + 0x10c]
add eax, edx
xor edx, edx
test ecx, ecx
setne dl
add edx, ecx
imul eax, edx
sar eax, 8
cmp ax, 0x100
jne 0x4529e2
or al, 0xff
movzx esi, byte [esp + 0x10]
movzx ecx, al
mov eax, dword [esp + 0x1c]
movzx edx, byte [eax - 2]
shl edx, 8
mov dl, byte [edx + ecx + 0x4d8640]
shl esi, 8
mov bl, byte [esi + ecx + 0x4c8640]
movzx esi, byte [esp + 0x13]
add dl, bl
mov byte [eax - 2], dl
movzx edx, byte [eax - 1]
shl edx, 8
mov dl, byte [edx + ecx + 0x4d8640]
shl esi, 8
mov bl, byte [esi + ecx + 0x4c8640]
movzx esi, byte [esp + 0x11]
add dl, bl
mov byte [eax - 1], dl
movzx edx, byte [eax]
shl edx, 8
mov dl, byte [edx + ecx + 0x4d8640]
shl esi, 8
add dl, byte [esi + ecx + 0x4c8640]
mov byte [eax], dl
jmp 0x452b2b
mov al, byte [esp + 0x12]
xor ecx, ecx
test al, al
setne cl
movzx edx, al
mov eax, dword [esp + 0x10c]
add ecx, edx
xor edx, edx
test eax, eax
setne dl
add edx, eax
imul ecx, edx
mov dl, byte [esp + 0x13]
sar ecx, 8
mov eax, ecx
mov cl, byte [esp + 0x10]
mov byte [esp + 0x18], cl
mov cl, byte [esp + 0x11]
mov byte [esp + 0x19], dl
mov byte [esp + 0x1a], cl
xor ecx, ecx
movzx edx, ax
movzx eax, byte [esp + ecx + 0x18]
imul eax, edx
sar eax, 8
cmp ax, 0xff
jbe 0x452aad
mov byte [esp + ecx + 0x14], 0xff
jmp 0x452ab1
mov byte [esp + ecx + 0x14], al
inc ecx
cmp ecx, 3
jl 0x452a95
mov ecx, dword [esp + 0x1c]
mov bl, byte [ecx - 2]
movzx edx, bl
mov eax, 0xff
sub eax, edx
movzx edx, byte [esp + 0x14]
imul eax, edx
cdq
and edx, 0xff
add eax, edx
sar eax, 8
add al, bl
mov bl, byte [ecx - 1]
mov byte [ecx - 2], al
movzx edx, bl
mov eax, 0xff
sub eax, edx
movzx edx, byte [esp + 0x15]
imul eax, edx
cdq
and edx, 0xff
add eax, edx
sar eax, 8
add al, bl
mov bl, byte [ecx]
mov byte [ecx - 1], al
movzx edx, bl
mov eax, 0xff
sub eax, edx
movzx edx, byte [esp + 0x16]
imul eax, edx
cdq
and edx, 0xff
add eax, edx
sar eax, 8
add al, bl
mov byte [ecx], al
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x30]
add esi, 4
add eax, edx
dec ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], ecx
jne 0x4528b0
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x4c]
add esi, edx
add edi, ecx
dec eax
mov dword [esp + 0x2c], esi
mov dword [esp + 0x54], edi
mov dword [esp + 0x4c], eax
jne 0x452851
mov ecx, dword [esp + 0x38]
call fcn.0044a8e0
mov ecx, dword [esp + 0xf4]
call fcn.0044a8e0
pop ebx
pop esi
pop edi
xor eax, eax
pop ebp
add esp, 0xd8
ret 0x28
xor eax, eax
pop ebp
add esp, 0xd8
ret 0x28