Function at 0x459010
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x64
push ebp
mov ebp, dword [esp + 0x6c]
mov ecx, dword [ebp + 0x48c]
cmp dword [ebp + 0x488], ecx
push edi
mov edi, dword [esp + 0x78]
je 0x459053
lea eax, [ecx + ecx*2]
shl eax, 4
lea edx, [eax + ebp + 0x49c]
mov eax, dword [edx + 0x18]
sub eax, ecx
mov ecx, dword [edx + 0x1c]
mov dword [edi], ecx
mov edx, dword [edx + 0x18]
pop edi
mov dword [ebp + 0x48c], edx
pop ebp
add esp, 0x64
ret 0xc
mov eax, dword [ebp + 0x31734]
push ebx
xor ebx, ebx
cmp eax, ebx
push esi
mov dword [ebp + 0x488], ebx
mov dword [ebp + 0x48c], ebx
jne 0x45907f
lea eax, [esp + 0x1c]
push eax
mov esi, ebp
call fcn.00458de0
mov dword [esp + 0x20], eax
jmp 0x459093
mov ecx, dword [ebp + 0x490]
mov edx, dword [ebp + 0x494]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
mov eax, dword [ebp + 0x498]
cmp eax, 2
mov dword [esp + 0x24], eax
jae 0x4590b7
pop esi
pop ebx
mov dword [edi], 0xffffffff
pop edi
mov eax, 1
pop ebp
add esp, 0x64
ret 0xc
cmp eax, 0x111
jbe 0x4590c6
mov dword [esp + 0x24], 0x111
mov ecx, dword [ebp + 0x18]
call dword [ebp + 0xc]
mov esi, eax
mov dl, byte [esi - 1]
dec esi
lea ecx, [ebp + 0x31738]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x78], dl
xor eax, eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x28], ecx
mov edi, edi
mov ecx, dword [esp + 0x28]
mov ebx, dword [ecx]
mov ecx, esi
sub ecx, ebx
dec ecx
mov dword [esp + eax + 0x54], ebx
cmp dl, byte [ecx]
jne 0x459151
mov bl, byte [esi + 1]
cmp bl, byte [ecx + 1]
jne 0x459151
mov ebx, dword [esp + 0x24]
mov edi, 2
cmp ebx, edi
jbe 0x459135
lea ebx, [esi + 2]
sub ecx, esi
lea ecx, [ecx]
mov dl, byte [ebx]
cmp dl, byte [ecx + ebx]
jne 0x459131
mov edx, dword [esp + 0x24]
inc edi
inc ebx
cmp edi, edx
jb 0x459120
mov dl, byte [esp + 0x78]
mov ecx, dword [esp + 0x38]
mov dword [esp + eax + 0x64], edi
cmp edi, dword [esp + ecx + 0x64]
jbe 0x459159
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
jmp 0x459159
mov dword [esp + eax + 0x64], 0
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
inc ecx
add eax, 4
add edi, 4
cmp eax, 0x10
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], edi
jb 0x4590f0
mov eax, dword [esp + 0x34]
mov edi, dword [esp + eax*4 + 0x64]
mov ecx, dword [ebp + 0x31730]
cmp edi, ecx
mov dword [esp + 0x44], edi
jb 0x4591bf
mov edx, dword [esp + 0x80]
mov dword [edx], eax
lea edx, [edi - 1]
test edx, edx
je 0x4591b3
mov eax, dword [ebp + 0x31734]
mov ecx, dword [ebp + 0x18]
add eax, edx
mov dword [ebp + 0x31734], eax
call dword [ebp + 0x14]
pop esi
pop ebx
mov eax, edi
pop edi
pop ebp
add esp, 0x64
ret 0xc
mov eax, dword [esp + 0x20]
cmp eax, ecx
jb 0x45920b
mov ecx, dword [esp + 0x1c]
mov edx, dword [ebp + ecx*4 + 0x30e98]
mov ecx, dword [esp + 0x80]
add edx, 4
mov dword [ecx], edx
lea edx, [eax - 1]
test edx, edx
je 0x45a315
mov eax, dword [ebp + 0x31734]
mov ecx, dword [ebp + 0x18]
add eax, edx
mov dword [ebp + 0x31734], eax
call dword [ebp + 0x14]
mov eax, dword [esp + 0x20]
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x64
ret 0xc
mov ebx, dword [esp + 0x54]
mov ecx, esi
sub ecx, ebx
cmp eax, 2
mov cl, byte [ecx - 1]
mov byte [esp + 0x13], cl
jae 0x459244
cmp dl, cl
je 0x459244
cmp edi, 2
jae 0x459244
mov edx, dword [esp + 0x80]
pop esi
pop ebx
pop edi
mov dword [edx], 0xffffffff
mov eax, 1
pop ebp
add esp, 0x64
ret 0xc
mov edi, dword [esp + 0x7c]
mov ecx, dword [ebp + 0x323a4]
mov ebx, dword [ebp + 0x31748]
mov edx, dword [ebp + 0x32394]
mov eax, edi
and eax, ecx
xor ecx, ecx
mov dword [esp + 0x24], eax
mov dword [ebp + 0x4a0], ebx
movzx eax, byte [esi - 1]
mov esi, dword [ebp + 0x323a0]
mov cl, 8
sub cl, dl
shr eax, cl
and esi, edi
mov ecx, edx
shl esi, cl
mov ecx, dword [ebp + 0x323a8]
add eax, esi
lea esi, [eax + eax*2]
shl esi, 9
add esi, ecx
cmp ebx, 7
movzx ecx, byte [esp + 0x78]
jb 0x4592ad
movzx eax, byte [esp + 0x13]
lea edi, [ebp + 0x30c9c]
push esi
call fcn.004588f0
jmp 0x4592b8
lea edx, [ebp + 0x30c9c]
call fcn.004588b0
mov esi, dword [esp + 0x24]
mov ecx, ebx
shl ecx, 4
add ecx, esi
movzx edx, word [ebp + ecx*2 + 0x323ac]
lea ecx, [ebp + ecx*2 + 0x323ac]
shr edx, 4
mov edx, dword [ebp + edx*4 + 0x30c9c]
add edx, eax
mov dword [ebp + 0x4cc], edx
mov dl, byte [esp + 0x78]
mov dword [ebp + 0x4e8], 0xffffffff
xor edi, edi
mov dword [ebp + 0x4d4], edi
movzx eax, word [ecx]
movzx ecx, word [ebp + ebx*2 + 0x3252c]
xor eax, 0x7f0
xor ecx, 0x7f0
shr eax, 4
mov eax, dword [ebp + eax*4 + 0x30c9c]
shr ecx, 4
mov ecx, dword [ebp + ecx*4 + 0x30c9c]
add ecx, eax
mov dword [esp + 0x3c], eax
cmp byte [esp + 0x13], dl
mov dword [esp + 0x40], ecx
jne 0x45937b
mov eax, ebx
shl eax, 4
add eax, esi
movzx edx, word [ebp + eax*2 + 0x3258c]
movzx esi, word [ebp + ebx*2 + 0x32544]
shr edx, 4
mov eax, dword [ebp + edx*4 + 0x30c9c]
shr esi, 4
add eax, dword [ebp + esi*4 + 0x30c9c]
add eax, ecx
cmp eax, dword [ebp + 0x4cc]
jae 0x45937b
mov dword [ebp + 0x4cc], eax
mov dword [ebp + 0x4e8], edi
mov dword [ebp + 0x4d4], edi
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x44]
cmp eax, ecx
jb 0x45938d
mov dword [esp + 0x18], eax
jmp 0x459393
mov dword [esp + 0x18], ecx
mov eax, ecx
cmp eax, 2
jae 0x4593b6
mov eax, dword [ebp + 0x4e8]
mov ecx, dword [esp + 0x80]
pop esi
pop ebx
pop edi
mov dword [ecx], eax
mov eax, 1
pop ebp
add esp, 0x64
ret 0xc
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x58]
mov dword [ebp + 0x4e4], edi
mov dword [ebp + 0x4bc], edx
mov edx, dword [esp + 0x5c]
mov dword [ebp + 0x4c4], edx
mov dword [ebp + 0x4c0], ecx
mov ecx, dword [esp + 0x60]
lea edx, [eax + eax*2]
shl edx, 4
mov dword [ebp + 0x4c8], ecx
lea ecx, [edx + ebp + 0x49c]
mov dword [ecx], 0x40000000
dec eax
sub ecx, 0x30
cmp eax, 2
jae 0x4593f1
xor ebx, ebx
mov esi, dword [esp + ebx*4 + 0x64]
cmp esi, 2
jb 0x459469
mov eax, dword [esp + 0x24]
mov edx, dword [ebp + 0x31748]
push eax
mov eax, ebx
mov ecx, ebp
call fcn.00458e70
mov ecx, dword [esp + 0x24]
imul ecx, ecx, 0x110
mov edi, eax
mov eax, dword [esp + 0x40]
add ecx, esi
add edi, eax
lea edx, [esi + esi*2]
shl edx, 4
lea eax, [ebp + ecx*4 + 0x37654]
lea ecx, [edx + ebp + 0x4b8]
mov edx, dword [eax]
add edx, edi
cmp edx, dword [ecx - 0x1c]
jae 0x45945d
mov dword [ecx - 0x1c], edx
xor edx, edx
mov dword [ecx - 4], edx
mov dword [ecx], ebx
mov dword [ecx - 0x14], edx
dec esi
sub eax, 4
sub ecx, 0x30
cmp esi, 2
jae 0x459447
inc ebx
cmp ebx, 4
jb 0x459402
mov eax, dword [ebp + 0x31748]
movzx ecx, word [ebp + eax*2 + 0x3252c]
mov edi, dword [esp + 0x64]
shr ecx, 4
mov eax, dword [ebp + ecx*4 + 0x30c9c]
add eax, dword [esp + 0x3c]
cmp edi, 2
inc edi
mov dword [esp + 0x44], eax
jae 0x45949e
mov edi, 2
cmp edi, dword [esp + 0x20]
ja 0x4595ae
mov eax, dword [ebp + 0x30e9c]
xor ecx, ecx
cmp edi, eax
mov dword [esp + 0x78], ecx
jbe 0x4594d2
jmp 0x4594c0
mov eax, dword [ebp + ecx*4 + 0x30ea4]
add ecx, 2
cmp edi, eax
ja 0x4594c0
mov dword [esp + 0x78], ecx
mov eax, dword [esp + 0x24]
imul eax, eax, 0x110
add eax, edi
lea edx, [ebp + eax*4 + 0x32e0c]
lea eax, [edi + edi*2]
shl eax, 4
lea ebx, [eax + ebp + 0x4b8]
mov eax, dword [esp + 0x44]
mov esi, dword [ebp + ecx*4 + 0x30ea0]
mov dword [esp + 0x2c], edx
mov edx, dword [edx]
add edx, eax
cmp edi, 5
mov dword [esp + 0x38], ebx
lea eax, [edi - 2]
jb 0x459516
mov eax, 3
cmp esi, 0x80
jae 0x45952c
shl eax, 7
add eax, esi
add edx, dword [ebp + eax*4 + 0x31b4c]
jmp 0x459571
mov ecx, 0x1ffff
sub ecx, esi
shr ecx, 0x1f
neg ecx
and ecx, 0xa
add ecx, 6
mov ebx, esi
shr ebx, cl
shl eax, 5
add eax, ecx
mov ecx, esi
movzx ebx, byte [ebx + ebp + 0x3049c]
lea eax, [ebx + eax*2]
mov eax, dword [ebp + eax*4 + 0x3174c]
and ecx, 0xf
mov ebx, dword [ebp + ecx*4 + 0x3234c]
mov ecx, dword [esp + 0x78]
add eax, ebx
mov ebx, dword [esp + 0x38]
add edx, eax
cmp edx, dword [ebx - 0x1c]
jae 0x459586
xor eax, eax
add esi, 4
mov dword [ebx - 0x1c], edx
mov dword [ebx - 4], eax
mov dword [ebx], esi
mov dword [ebx - 0x14], eax
cmp edi, dword [ebp + ecx*4 + 0x30e9c]
jne 0x45959e
mov eax, dword [esp + 0x1c]
add ecx, 2
cmp ecx, eax
mov dword [esp + 0x78], ecx
je 0x4595ae
mov edx, dword [esp + 0x2c]
inc edi
add edx, 4
add ebx, 0x30
jmp 0x4594f2
mov ecx, dword [esp + 0x18]
mov eax, 1
cmp ecx, eax
mov dword [esp + 0x14], eax
je 0x45a2d7
mov edi, dword [esp + 0x14]
lea ecx, [esp + 0x38]
push ecx
mov esi, ebp
call fcn.00458de0
cmp eax, dword [ebp + 0x31730]
mov dword [esp + 0x4c], eax
jae 0x45a2f4
mov ebx, dword [esp + 0x7c]
inc ebx
lea edx, [edi + edi*2]
shl edx, 4
mov esi, dword [edx + ebp + 0x4a4]
test esi, esi
mov eax, dword [edx + ebp + 0x4b4]
mov dword [esp + 0x7c], ebx
lea ebx, [edx + ebp]
je 0x459666
mov ecx, dword [ebx + 0x4a8]
dec eax
test ecx, ecx
je 0x459650
mov ecx, dword [ebx + 0x4ac]
mov edx, dword [ebx + 0x4b0]
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp edx, 4
mov ecx, dword [ecx + ebp + 0x4a0]
jae 0x459640
mov ecx, dword [ecx*4 + 0x46aaf8]
mov edx, dword [ecx*4 + 0x46aa98]
jmp 0x459673
mov ecx, dword [ecx*4 + str._a_a_a_a_a_a_a_n_n_n_n_n_b_b_b_b_b_b_b_v_v_v_v_v_t_t_t_t_t_t_t_v_v_v_v_v]
mov edx, dword [ecx*4 + 0x46aa98]
jmp 0x459673
lea edx, [eax + eax*2]
shl edx, 4
mov ecx, dword [edx + ebp + 0x4a0]
mov edx, dword [ecx*4 + 0x46aa98]
jmp 0x459673
lea ecx, [eax + eax*2]
shl ecx, 4
mov edx, dword [ecx + ebp + 0x4a0]
dec edi
cmp eax, edi
jne 0x4596a2
mov eax, dword [ebx + 0x4b8]
test eax, eax
jne 0x459692
mov esi, dword [edx*4 + 0x46ab28]
mov dword [esp + 0x1c], esi
jmp 0x45973d
mov esi, dword [edx*4 + 0x46aa98]
mov dword [esp + 0x1c], esi
jmp 0x45973d
test esi, esi
je 0x4596c9
mov ecx, dword [ebx + 0x4a8]
test ecx, ecx
je 0x4596c9
mov ecx, dword [ebx + 0x4b0]
mov eax, dword [ebx + 0x4ac]
mov esi, dword [edx*4 + 0x46aaf8]
mov dword [esp + 0x78], ecx
jmp 0x4596e8
mov ecx, dword [ebx + 0x4b8]
cmp ecx, 4
mov dword [esp + 0x78], ecx
jae 0x4596e1
mov esi, dword [edx*4 + 0x46aaf8]
jmp 0x4596e8
mov esi, dword [edx*4 + str._a_a_a_a_a_a_a_n_n_n_n_n_b_b_b_b_b_b_b_v_v_v_v_v_t_t_t_t_t_t_t_v_v_v_v_v]
lea edx, [eax + eax*2]
shl edx, 4
cmp ecx, 4
mov dword [esp + 0x1c], esi
lea edx, [edx + ebp + 0x49c]
jae 0x45982a
mov eax, dword [edx + ecx*4 + 0x20]
mov dword [esp + 0x54], eax
mov eax, 1
cmp ecx, eax
jb 0x459726
mov eax, dword [esp + 0x78]
inc eax
cmp eax, 4
lea esi, [edx + 0x20]
lea edi, [esp + 0x58]
rep movsd dword es:[edi], dword [esi]
jae 0x459739
lea edx, [edx + eax*4 + 0x20]
mov ecx, 4
lea edi, [esp + eax*4 + 0x54]
sub ecx, eax
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [ebx + 0x4bc], edx
mov edx, dword [esp + 0x60]
mov dword [ebx + 0x4c0], eax
mov eax, dword [ebx + 0x49c]
mov dword [ebx + 0x4a0], esi
mov dword [ebx + 0x4c4], ecx
mov dword [ebx + 0x4c8], edx
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], 0
call dword [ebp + 0xc]
mov edi, eax
mov eax, dword [esp + 0x54]
mov cl, byte [edi - 1]
dec edi
mov edx, edi
sub edx, eax
lea eax, [edx - 1]
mov dword [esp + 0x40], eax
mov al, byte [eax]
mov byte [esp + 0x78], cl
mov ecx, dword [ebp + 0x323a4]
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x7c]
and eax, ecx
mov dword [esp + 0x34], eax
mov ecx, esi
shl ecx, 4
add eax, ecx
movzx edx, word [ebp + eax*2 + 0x323ac]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x44], eax
shr edx, 4
mov eax, dword [ebp + edx*4 + 0x30c9c]
mov edx, dword [ebp + 0x32394]
add eax, ecx
xor ecx, ecx
mov dword [esp + 0x30], eax
movzx eax, byte [edi - 1]
mov dword [esp + 0x20], edi
mov edi, dword [ebp + 0x323a0]
mov cl, 8
sub cl, dl
shr eax, cl
and edi, dword [esp + 0x7c]
mov ecx, edx
shl edi, cl
mov ecx, dword [ebp + 0x323a8]
add eax, edi
lea edi, [eax + eax*2]
shl edi, 9
add edi, ecx
cmp esi, 7
jb 0x45984b
movzx eax, byte [esp + 0x13]
movzx ecx, byte [esp + 0x78]
push edi
lea edi, [ebp + 0x30c9c]
call fcn.004588f0
jmp 0x459889
mov eax, dword [edx + 0x24]
add ecx, 0xfffffffc
mov dword [esp + 0x54], ecx
mov ecx, dword [edx + 0x20]
mov dword [esp + 0x58], ecx
mov ecx, dword [edx + 0x28]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
jmp 0x45973d
movzx eax, byte [esp + 0x78]
xor ecx, ecx
or eax, 0x100
mov esi, eax
shr esi, 7
and esi, 1
mov edx, eax
shr edx, 8
movzx edx, word [edi + edx*2]
neg esi
sar esi, 4
and esi, 0x7f
shr edx, 4
xor edx, esi
mov esi, dword [ebp + edx*4 + 0x30c9c]
shl eax, 1
add ecx, esi
cmp eax, 0x10000
jb 0x459857
mov eax, ecx
mov edx, dword [esp + 0x30]
add edx, eax
cmp edx, dword [ebx + 0x4cc]
mov dword [esp + 0x30], edx
jae 0x4598c7
mov eax, dword [esp + 0x14]
mov dword [ebx + 0x4cc], edx
mov dword [ebx + 0x4e4], eax
mov dword [ebx + 0x4e8], 0xffffffff
mov dword [ebx + 0x4d4], 0
mov dword [esp + 0x28], 1
mov ecx, dword [esp + 0x44]
movzx edx, word [ebp + ecx*2 + 0x323ac]
mov edi, dword [esp + 0x2c]
xor edx, 0x7f0
shr edx, 4
mov eax, dword [ebp + edx*4 + 0x30c9c]
add eax, edi
mov edi, dword [esp + 0x1c]
movzx edx, word [ebp + edi*2 + 0x3252c]
xor edx, 0x7f0
shr edx, 4
mov esi, dword [ebp + edx*4 + 0x30c9c]
mov dl, byte [esp + 0x13]
add esi, eax
mov dword [esp + 0x50], eax
mov al, byte [esp + 0x78]
cmp dl, al
mov edx, dword [esp + 0x14]
mov dword [esp + 0x48], esi
jne 0x459985
cmp dword [ebx + 0x4e4], edx
jae 0x459931
mov eax, dword [ebx + 0x4e8]
test eax, eax
je 0x459985
movzx eax, word [ebp + edi*2 + 0x32544]
movzx ecx, word [ebp + ecx*2 + 0x3258c]
shr eax, 4
mov eax, dword [ebp + eax*4 + 0x30c9c]
shr ecx, 4
mov edi, dword [ebp + ecx*4 + 0x30c9c]
mov ecx, dword [ebx + 0x4cc]
add eax, edi
add eax, esi
cmp eax, ecx
ja 0x459985
mov dword [ebx + 0x4cc], eax
xor eax, eax
mov dword [ebx + 0x4e4], edx
mov dword [ebx + 0x4e8], eax
mov dword [ebx + 0x4d4], eax
mov dword [esp + 0x28], 1
mov ecx, dword [ebp + 0x498]
mov eax, 0xfff
sub eax, edx
cmp eax, ecx
mov dword [esp + 0x2c], ecx
jae 0x4599a0
mov ecx, eax
mov dword [esp + 0x2c], ecx
cmp ecx, 2
jb 0x45a2c2
mov edi, dword [esp + 0x2c]
mov eax, dword [ebp + 0x31730]
cmp edi, eax
mov dword [esp + 0x24], edi
jbe 0x4599bf
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x28]
test ecx, ecx
jne 0x459b24
mov dl, byte [esp + 0x78]
cmp byte [esp + 0x13], dl
je 0x459b24
lea esi, [eax + 1]
cmp esi, edi
jbe 0x4599e2
mov esi, edi
mov ecx, 1
cmp esi, ecx
jbe 0x459a05
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x40]
lea eax, [edx + 1]
sub edi, edx
mov dl, byte [eax]
cmp dl, byte [edi + eax]
jne 0x459a05
inc ecx
inc eax
cmp ecx, esi
jb 0x4599f8
lea eax, [ecx - 1]
cmp eax, 2
mov dword [esp + 0x78], eax
jb 0x459b24
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax*4 + 0x46aa98]
mov eax, dword [esp + 0x7c]
mov edx, dword [ebp + 0x323a4]
movzx esi, word [ebp + ecx*2 + 0x3252c]
inc eax
and eax, edx
mov edx, ecx
shl edx, 4
lea ebx, [edx + eax]
movzx edx, word [ebp + ebx*2 + 0x323ac]
xor edx, 0x7f0
xor esi, 0x7f0
shr esi, 4
mov edi, dword [ebp + esi*4 + 0x30c9c]
mov esi, dword [esp + 0x30]
shr edx, 4
mov edx, dword [ebp + edx*4 + 0x30c9c]
add edx, edi
mov edi, dword [esp + 0x14]
add edx, esi
mov esi, dword [esp + 0x78]
lea esi, [esi + edi + 1]
mov edi, dword [esp + 0x18]
cmp edi, esi
mov dword [esp + 0x40], ebx
jae 0x459ab4
lea ebx, [edi + edi*2]
shl ebx, 4
lea ebx, [ebx + ebp + 0x49c]
mov dword [esp + 0x44], ebx
mov ebx, esi
sub ebx, edi
add edi, ebx
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x44]
add edi, 0x30
dec ebx
mov dword [edi], 0x40000000
jne 0x459aa4
mov ebx, dword [esp + 0x40]
movzx edi, word [ebp + ebx*2 + 0x3258c]
imul eax, eax, 0x110
movzx ebx, word [ebp + ecx*2 + 0x32544]
xor edi, 0x7f0
shr edi, 4
mov ecx, dword [ebp + edi*4 + 0x30c9c]
shr ebx, 4
add ecx, dword [ebp + ebx*4 + 0x30c9c]
add eax, dword [esp + 0x78]
mov ebx, dword [ebp + eax*4 + 0x37654]
lea eax, [esi + esi*2]
shl eax, 4
add ecx, ebx
add ecx, edx
mov edx, dword [eax + ebp + 0x49c]
cmp ecx, edx
lea eax, [eax + ebp + 0x49c]
jae 0x459b24
mov dword [eax], ecx
mov ecx, dword [esp + 0x14]
inc ecx
mov dword [eax + 0x18], ecx
xor ecx, ecx
mov dword [eax + 0x1c], ecx
mov dword [eax + 8], 1
mov dword [eax + 0xc], ecx
mov dword [esp + 0x3c], 2
mov dword [esp + 0x78], 0
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x78]
mov edi, dword [esp + edx*4 + 0x54]
mov eax, ecx
mov cl, byte [ecx]
sub eax, edi
mov dl, byte [eax - 1]
dec eax
cmp cl, dl
mov dword [esp + 0x28], eax
jne 0x459e67
mov edx, dword [esp + 0x20]
mov al, byte [edx + 1]
mov ecx, dword [esp + 0x28]
cmp al, byte [ecx + 1]
jne 0x459e67
mov edi, dword [esp + 0x24]
mov ebx, 2
cmp edi, ebx
jbe 0x459b91
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
lea eax, [ecx + 2]
sub esi, ecx
mov dl, byte [eax]
cmp dl, byte [esi + eax]
jne 0x459b91
inc ebx
inc eax
cmp ebx, edi
jb 0x459b84
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
lea edi, [ebx + eax]
cmp ecx, edi
jae 0x459bcc
lea edx, [ecx + ecx*2]
mov eax, edi
shl edx, 4
sub eax, ecx
add ecx, eax
lea edx, [edx + ebp + 0x49c]
mov dword [esp + 0x18], ecx
jmp 0x459bc0
add edx, 0x30
dec eax
mov dword [edx], 0x40000000
jne 0x459bc0
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x7c]
mov ecx, ebp
mov esi, ebx
call fcn.00458e70
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x34]
imul ecx, ecx, 0x110
mov dword [esp + 0x44], ecx
add ecx, ebx
lea edx, [ebp + ecx*4 + 0x37654]
lea ecx, [edi + edi*2]
shl ecx, 4
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], edx
lea ecx, [ecx + ebp + 0x4b8]
mov edi, edx
mov edx, dword [edi]
add edx, eax
cmp edx, dword [ecx - 0x1c]
jae 0x459c34
mov dword [ecx - 0x1c], edx
mov edx, dword [esp + 0x14]
mov dword [ecx - 4], edx
mov edx, dword [esp + 0x78]
mov dword [ecx], edx
mov dword [ecx - 0x14], 0
dec ebx
sub edi, 4
sub ecx, 0x30
cmp ebx, 2
jae 0x459c14
mov eax, dword [esp + 0x78]
test eax, eax
mov dword [esp + 0x30], edi
jne 0x459c53
lea eax, [esi + 1]
mov dword [esp + 0x3c], eax
mov ecx, dword [ebp + 0x31730]
mov edx, dword [esp + 0x2c]
lea eax, [esi + 1]
add ecx, eax
cmp ecx, edx
jbe 0x459c68
mov ecx, edx
cmp eax, ecx
jae 0x459c8d
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
lea edi, [eax + ebx]
sub edx, ebx
lea esp, [esp]
mov bl, byte [edi]
cmp bl, byte [edi + edx]
jne 0x459c8d
inc eax
inc edi
cmp eax, ecx
jb 0x459c80
or ecx, 0xffffffff
sub ecx, esi
add eax, ecx
cmp eax, 2
mov dword [esp + 0x30], eax
jb 0x459e67
mov ecx, dword [esp + 0x20]
movzx edi, byte [esi + ecx - 1]
movzx ebx, byte [esi + ecx]
mov edx, dword [ebp + 0x32394]
mov eax, dword [esp + 0x28]
movzx eax, byte [esi + eax]
xor ecx, ecx
mov cl, 8
sub cl, dl
mov edx, dword [ebp + 0x323a0]
shr edi, cl
mov ecx, dword [esp + 0x7c]
add ecx, esi
and edx, ecx
mov ecx, dword [ebp + 0x32394]
shl edx, cl
mov ecx, ebx
add edi, edx
lea edx, [edi + edi*2]
mov edi, dword [ebp + 0x323a8]
shl edx, 9
add edx, edi
push edx
lea edi, [ebp + 0x30c9c]
call fcn.004588f0
mov edx, dword [ebp + 0x323a4]
mov ecx, dword [esp + 0x7c]
mov edi, edx
add ecx, esi
and edi, ecx
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx*4 + 0x46aaf8]
mov ebx, ecx
shl ebx, 4
add edi, ebx
movzx edi, word [ebp + edi*2 + 0x323ac]
shr edi, 4
mov ebx, dword [ebp + edi*4 + 0x30c9c]
mov edi, dword [esp + 0x44]
add eax, ebx
add edi, esi
mov ebx, dword [ebp + edi*4 + 0x37654]
mov edi, dword [esp + 0x40]
add eax, ebx
add eax, edi
mov edi, dword [ecx*4 + 0x46aa98]
mov ecx, dword [esp + 0x7c]
movzx ebx, word [ebp + edi*2 + 0x3252c]
lea ecx, [esi + ecx + 1]
and ecx, edx
mov edx, edi
shl edx, 4
add edx, ecx
mov dword [esp + 0x28], edx
movzx edx, word [ebp + edx*2 + 0x323ac]
xor edx, 0x7f0
xor ebx, 0x7f0
shr edx, 4
shr ebx, 4
mov dword [esp + 0x44], edx
mov edx, dword [ebp + ebx*4 + 0x30c9c]
mov ebx, dword [esp + 0x44]
add edx, dword [ebp + ebx*4 + 0x30c9c]
mov ebx, dword [esp + 0x14]
add edx, eax
mov eax, dword [esp + 0x30]
add eax, esi
lea ebx, [eax + ebx + 1]
mov eax, dword [esp + 0x18]
cmp eax, ebx
mov dword [esp + 0x40], ebx
jae 0x459de4
lea eax, [eax + eax*2]
shl eax, 4
lea eax, [eax + ebp + 0x49c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x18]
sub ebx, eax
add eax, ebx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x44]
add eax, 0x30
dec ebx
mov dword [eax], 0x40000000
jne 0x459dd4
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x28]
imul ecx, ecx, 0x110
movzx eax, word [ebp + eax*2 + 0x3258c]
movzx edi, word [ebp + edi*2 + 0x32544]
xor eax, 0x7f0
shr eax, 4
mov eax, dword [ebp + eax*4 + 0x30c9c]
shr edi, 4
add eax, dword [ebp + edi*4 + 0x30c9c]
add ecx, dword [esp + 0x30]
mov edi, dword [ebp + ecx*4 + 0x37654]
lea ecx, [ebx + ebx*2]
shl ecx, 4
add eax, edi
add eax, edx
mov edx, dword [ecx + ebp + 0x49c]
cmp eax, edx
lea ecx, [ecx + ebp + 0x49c]
jae 0x459e67
mov edx, dword [esp + 0x14]
mov dword [ecx], eax
lea eax, [esi + edx + 1]
mov dword [ecx + 0x18], eax
mov eax, 1
mov dword [ecx + 0x10], edx
mov edx, dword [esp + 0x78]
mov dword [ecx + 0x1c], 0
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x14], edx
mov eax, dword [esp + 0x78]
inc eax
cmp eax, 4
mov dword [esp + 0x78], eax
jb 0x459b34
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x24]
cmp edx, ecx
jbe 0x459eaf
mov esi, dword [ebp + 0x30e9c]
xor eax, eax
cmp ecx, esi
mov edx, ecx
jbe 0x459ea1
mov esi, dword [ebp + eax*4 + 0x30ea4]
add eax, 2
cmp ecx, esi
ja 0x459e93
mov dword [ebp + eax*4 + 0x30e9c], ecx
add eax, 2
mov dword [esp + 0x38], eax
mov esi, dword [esp + 0x3c]
cmp edx, esi
jb 0x45a2c2
mov eax, dword [esp + 0x1c]
movzx ecx, word [ebp + eax*2 + 0x3252c]
mov edi, dword [esp + 0x50]
shr ecx, 4
mov eax, dword [ebp + ecx*4 + 0x30c9c]
mov ecx, dword [esp + 0x18]
add eax, edi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x14]
add eax, edx
cmp ecx, eax
jae 0x459f0c
lea edx, [ecx + ecx*2]
shl edx, 4
sub eax, ecx
add ecx, eax
lea edx, [edx + ebp + 0x49c]
mov dword [esp + 0x18], ecx
mov edi, edi
add edx, 0x30
dec eax
mov dword [edx], 0x40000000
jne 0x459f00
mov ecx, dword [ebp + 0x30e9c]
xor eax, eax
cmp esi, ecx
mov dword [esp + 0x30], eax
jbe 0x459f32
lea esp, [esp]
mov ecx, dword [ebp + eax*4 + 0x30ea4]
add eax, 2
cmp esi, ecx
ja 0x459f20
mov dword [esp + 0x30], eax
lea ebx, [eax*4]
mov edx, dword [ebx + ebp + 0x30ea0]
mov ecx, 0x1ffff
sub ecx, edx
shr ecx, 0x1f
neg ecx
and ecx, 0xa
add ecx, 6
mov eax, edx
shr eax, cl
lea edi, [esi + 1]
mov dword [esp + 0x28], edx
mov dword [esp + 0x78], edi
movzx eax, byte [eax + ebp + 0x3049c]
lea ecx, [eax + ecx*2]
mov eax, dword [esp + 0x34]
imul eax, eax, 0x110
add eax, esi
lea eax, [ebp + eax*4 + 0x32e0c]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x34], eax
lea eax, [esi + ecx]
lea eax, [eax + eax*2]
shl eax, 4
lea esi, [eax + ebp + 0x4b8]
mov dword [esp + 0x24], esi
nop
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
mov ecx, dword [ecx]
add ecx, eax
lea eax, [edi - 1]
mov dword [esp + 0x4c], eax
cmp eax, 5
lea eax, [edi - 3]
jb 0x459fc0
mov eax, 3
cmp edx, 0x80
jae 0x459fd6
shl eax, 7
add eax, edx
add ecx, dword [ebp + eax*4 + 0x31b4c]
jmp 0x459ff4
mov edi, dword [esp + 0x44]
shl eax, 6
add eax, edi
mov eax, dword [ebp + eax*4 + 0x3174c]
mov edi, edx
and edi, 0xf
add eax, dword [ebp + edi*4 + 0x3234c]
add ecx, eax
cmp ecx, dword [esi - 0x1c]
mov dword [esp + 0x3c], ecx
jae 0x45a013
mov dword [esi - 0x1c], ecx
mov ecx, dword [esp + 0x14]
add edx, 4
mov dword [esi - 4], ecx
mov dword [esi], edx
mov dword [esi - 0x14], 0
mov edx, dword [esp + 0x4c]
cmp edx, dword [ebx + ebp + 0x30e9c]
jne 0x45a296
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x78]
mov eax, dword [ebp + 0x31730]
mov ecx, dword [esp + 0x2c]
mov esi, ebx
sub esi, edi
add eax, edx
dec esi
cmp eax, ecx
mov edi, edx
jbe 0x45a049
mov eax, ecx
cmp edx, eax
jae 0x45a06d
sub ebx, esi
lea ecx, [esi + edx]
mov dword [esp + 0x4c], ebx
jmp 0x45a060
mov ebx, dword [esp + 0x4c]
lea esp, [esp]
mov bl, byte [ebx + ecx]
cmp bl, byte [ecx]
jne 0x45a06d
inc edi
inc ecx
cmp edi, eax
jb 0x45a058
or ecx, 0xffffffff
lea eax, [edx - 1]
sub ecx, eax
add edi, ecx
cmp edi, 2
mov dword [esp + 0x40], edi
jb 0x45a247
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
mov ebx, dword [ebp + 0x323a4]
lea eax, [edx + ecx - 1]
mov edx, dword [ebp + 0x32394]
mov dword [esp + 0x4c], eax
and ebx, eax
movzx eax, byte [esi + ecx - 1]
mov esi, dword [esp + 0x20]
movzx edi, byte [esi + ecx - 1]
movzx esi, byte [esi + ecx - 2]
xor ecx, ecx
mov cl, 8
sub cl, dl
mov edx, dword [ebp + 0x323a0]
shr esi, cl
and edx, dword [esp + 0x4c]
mov ecx, dword [ebp + 0x32394]
shl edx, cl
mov dword [esp + 0x4c], edi
lea edi, [ebp + 0x30c9c]
add esi, edx
lea ecx, [esi + esi*2]
mov esi, dword [ebp + 0x323a8]
shl ecx, 9
add ecx, esi
push ecx
mov ecx, dword [esp + 0x50]
call fcn.004588f0
mov edx, dword [esp + 0x1c]
mov ecx, dword [edx*4 + str._a_a_a_a_a_a_a_n_n_n_n_n_b_b_b_b_b_b_b_v_v_v_v_v_t_t_t_t_t_t_t_v_v_v_v_v]
mov esi, dword [esp + 0x3c]
mov edx, ecx
shl edx, 4
add edx, ebx
movzx edx, word [ebp + edx*2 + 0x323ac]
shr edx, 4
mov edi, dword [ebp + edx*4 + 0x30c9c]
mov edx, dword [ebp + 0x323a4]
add eax, edi
add eax, esi
mov esi, dword [ecx*4 + 0x46aa98]
movzx edi, word [ebp + esi*2 + 0x3252c]
lea ecx, [ebx + 1]
and ecx, edx
mov edx, esi
shl edx, 4
lea ebx, [edx + ecx]
movzx edx, word [ebp + ebx*2 + 0x323ac]
xor edx, 0x7f0
xor edi, 0x7f0
shr edx, 4
mov edx, dword [ebp + edx*4 + 0x30c9c]
shr edi, 4
add edx, dword [ebp + edi*4 + 0x30c9c]
mov edi, dword [esp + 0x40]
add edx, eax
mov eax, dword [esp + 0x78]
dec eax
add edi, eax
mov eax, dword [esp + 0x14]
lea edi, [edi + eax + 1]
mov eax, dword [esp + 0x18]
cmp eax, edi
mov dword [esp + 0x48], ebx
jae 0x45a1c0
mov ebx, eax
lea eax, [ebx + ebx*2]
shl eax, 4
lea eax, [eax + ebp + 0x49c]
mov dword [esp + 0x4c], eax
mov eax, edi
sub eax, ebx
add ebx, eax
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x4c]
jmp 0x45a1b0
add ebx, 0x30
dec eax
mov dword [ebx], 0x40000000
jne 0x45a1b0
mov ebx, dword [esp + 0x48]
movzx eax, word [ebp + ebx*2 + 0x3258c]
imul ecx, ecx, 0x110
movzx esi, word [ebp + esi*2 + 0x32544]
xor eax, 0x7f0
shr eax, 4
mov eax, dword [ebp + eax*4 + 0x30c9c]
shr esi, 4
add eax, dword [ebp + esi*4 + 0x30c9c]
add ecx, dword [esp + 0x40]
mov esi, dword [ebp + ecx*4 + 0x37654]
lea ecx, [edi + edi*2]
shl ecx, 4
add eax, esi
add eax, edx
mov edx, dword [ecx + ebp + 0x49c]
cmp eax, edx
lea ecx, [ecx + ebp + 0x49c]
jae 0x45a247
mov edx, dword [esp + 0x78]
mov dword [ecx], eax
mov eax, dword [esp + 0x14]
dec edx
lea edx, [edx + eax + 1]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [ecx + 0x18], edx
mov edx, 1
add eax, 4
mov dword [ecx + 0x1c], 0
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], edx
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
add eax, 2
cmp eax, ecx
mov dword [esp + 0x30], eax
je 0x45a2c2
lea ebx, [eax*4]
mov eax, dword [ebx + ebp + 0x30ea0]
cmp eax, 0x80
mov dword [esp + 0x28], eax
jb 0x45a296
mov ecx, 0x1ffff
sub ecx, eax
shr ecx, 0x1f
neg ecx
and ecx, 0xa
add ecx, 6
shr eax, cl
movzx edx, byte [eax + ebp + 0x3049c]
lea eax, [edx + ecx*2]
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x78]
add edx, 4
add ecx, 0x30
inc eax
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x78], eax
mov edi, eax
mov esi, ecx
jmp 0x459fa0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
inc eax
cmp eax, ecx
mov dword [esp + 0x14], eax
jne 0x4595c3
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x14]
push ecx
mov ecx, ebp
call fcn.00458f30
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x64
ret 0xc
mov edx, dword [esp + 0x38]
mov dword [ebp + 0x490], eax
mov eax, dword [esp + 0x80]
push eax
mov eax, edi
mov ecx, ebp
mov dword [ebp + 0x494], edx
call fcn.00458f30
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x64
ret 0xc