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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x118
mov ecx, dword [esp + 0x134]
mov ebx, 0x1556727c
cmp dword [esp + 0x130], 0x3f
jne 0x405766
xor ebx, 0x15567279
mov esi, ecx
mov dword [esp], esi
call fcn.007c3e70
lea ebp, [esi + eax]
mov edx, esi
cmp eax, 1
jle 0x40589c
add bl, 0xfc
movzx eax, bl
cmp eax, 0x14
jne 0x4059f7
mov esi, 4
movzx eax, byte [edx]
cmp eax, 0x22
je 0x405af5
mov byte [esp + 0x4b], 0x4d
movzx eax, al
cmp eax, 0x27
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x74], eax
mov byte [esp + 0x4c], al
mov byte [esp + 0x3b], al
mov byte [esp + 0x68], al
mov byte [esp + 0x3c], al
mov byte [esp + 0x80], al
mov byte [esp + 0x33], al
mov byte [esp + 0x28], al
mov dword [esp + 0x84], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x90], ecx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], ebp
mov dword [esp + 0x2c], ebp
je 0x406dcc
jmp 0x406e41
lea edx, [ebx - 0x15567278]
mov al, dl
mov edi, edx
add al, 0x57
mov byte [esp + 0x58], al
mov esi, ecx
mov dword [esp], esi
call fcn.007c3e70
lea esi, [esi + eax]
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
cmp eax, ecx
jle 0x405931
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x134]
mov ebx, esi
mov byte [esp + 0x23], cl
mov byte [esp + 0x60], cl
mov byte [esp + 0x33], cl
mov byte [esp + 0x22], cl
mov byte [esp + 0x54], cl
mov byte [esp + 0x70], cl
mov byte [esp + 0x4b], cl
mov byte [esp + 0x3b], cl
mov byte [esp + 0x5c], cl
mov dword [esp + 0x64], ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x14], esi
cmp edi, 4
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x10]
je 0x405a73
xor ecx, ecx
test cl, cl
jne 0x405a73
mov ebp, 0xa
mov esi, dword [esp + 0x2c]
cmp eax, esi
jae 0x405c0e
mov byte [esp + 0x3b], 0x3d
mov byte [esp + 0x5c], 0x10
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], esi
jne 0x40641c
jmp 0x4065f4
mov dword [esp + 0x58], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x44], eax
mov byte [esp + 0x4b], al
mov byte [esp + 0x4c], al
mov byte [esp + 0x3b], al
mov byte [esp + 0x68], al
mov byte [esp + 0x3c], al
mov byte [esp + 0x80], al
mov edi, ebp
mov dword [esp + 0x60], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x94], edi
mov dword [esp + 0x7c], edx
mov dword [esp + 0x50], esi
mov dword [esp + 0x74], ecx
mov dword [esp + 0x2c], ebp
cmp ebx, 5
mov ebp, dword [esp + 0x54]
je 0x406e41
imul ebx, ebx
and ebx, 3
cmp ebx, 3
jne 0x407411
jmp 0x406e41
add ebx, 0xeaa98d8e
mov dword [esp + 0x94], eax
mov dword [esp + 0x64], eax
mov byte [esp + 0x60], al
mov byte [esp + 0x33], al
mov byte [esp + 0x22], al
mov byte [esp + 0x54], al
mov byte [esp + 0x70], al
mov byte [esp + 0x4b], al
mov byte [esp + 0x3b], al
mov byte [esp + 0x5c], al
mov byte [esp + 0x23], al
mov byte [esp + 0x6c], al
mov dword [esp + 0x3c], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x74], edi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
cmp ebx, 0xa
mov al, byte [esp + 0x6c]
jne 0x405ac1
imul ebx, ebx
and ebx, 3
cmp ebx, 2
jae 0x405ac1
mov ecx, ebp
mov edx, dword [esp + 0x134]
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x14], esi
jmp 0x406ad9
mov esi, 7
mov dword [esp + 0x58], eax
mov dword [esp + 0x40], eax
mov byte [esp + 0x33], al
mov byte [esp + 0x28], al
mov byte [esp + 0x3c], al
mov byte [esp + 0x80], al
mov byte [esp + 0x68], al
mov dword [esp + 0x6c], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], ebp
mov dword [esp + 0x5c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x88], edx
mov dword [esp + 0x70], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x90], edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x64], edx
mov dword [esp + 0x74], edx
mov dword [esp + 0x50], eax
jmp 0x4075ca
mov esi, 0xf
mov ecx, dword [esp + 0x134]
movzx ecx, byte [ecx]
cmp ecx, 0x22
je 0x405b73
movzx ecx, cl
cmp ecx, 0x27
jne 0x405b7f
mov byte [esp + 0x23], 0x4d
mov ebp, ebx
mov ebx, 0x19
mov byte [esp + 0x6c], 0x2e
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
jmp 0x4059b1
movzx edx, al
cmp edx, 0x2e
je 0x405b9e
mov ecx, 9
cmp edx, 0x31
mov ebx, ebp
jne 0x405be5
mov edx, dword [esp + 0x134]
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x14], esi
jmp 0x40682b
mov byte [esp + 0x4b], 0x4d
mov dword [esp + 0x58], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x88], eax
mov byte [esp + 0x3b], al
mov byte [esp + 0x68], al
mov byte [esp + 0x3c], al
mov byte [esp + 0x80], al
mov byte [esp + 0x33], al
mov byte [esp + 0x28], al
mov dword [esp + 0x6c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x40], ecx
mov ecx, ebp
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], ebp
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], ecx
jmp 0x406d46
mov byte [esp + 0x23], 0x4d
mov ecx, ebx
jmp 0x406a17
mov byte [esp + 0x23], 0x4d
mov ecx, ebx
mov edx, dword [esp + 0x134]
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x4c], eax
jmp 0x406ad9
lea eax, [esi - 1]
mov dword [esp + 0x94], eax
movzx ecx, byte [esi - 1]
cmp ecx, 0x27
mov ebx, ebp
jne 0x405c30
mov dword [esp + 0x10], 0xd
mov edx, ecx
or edx, 2
xor ecx, 2
add ecx, edx
mov ecx, ebx
mov edx, dword [esp + 0x134]
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x14], esi
jne 0x406001
jmp 0x406ad9
lea eax, [esi - 1]
mov dword [esp + 0x94], eax
movzx ecx, byte [esi - 1]
cmp ecx, 0x27
mov ecx, dword [esp + 0x134]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x14], esi
jmp 0x406ad1
mov byte [esp + 0x3b], 0x3d
mov byte [esp + 0x5c], 0x10
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], esi
jmp 0x4065f4
mov ecx, ebx
jmp 0x4059df
mov edi, 0x1a
mov esi, dword [esp + 0x14]
lea eax, [esi - 1]
mov dword [esp + 0x94], eax
movzx edx, byte [esi - 1]
cmp edx, 0x22
je 0x405c7b
mov byte [esp + 0x23], 0x5c
imul edx, edx
and edx, 3
cmp edx, 3
mov edx, dword [esp + 0x134]
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], esi
jne 0x406ad9
jmp 0x40697a
mov byte [esp + 0x23], 0x5c
mov edx, dword [esp + 0x134]
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], esi
jmp 0x40697a
mov esi, dword [esp + 0x14]
lea eax, [esi - 1]
mov dword [esp + 0x94], eax
movzx edx, byte [esi - 1]
cmp edx, 0x27
je 0x405cd0
mov ecx, 0x10
imul edx, edx
and edx, 3
cmp edx, 3
mov edx, dword [esp + 0x134]
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], esi
jne 0x405fd7
jmp 0x405cdf
mov ecx, dword [esp + 0x134]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], esi
mov ebp, ebx
xor ecx, ecx
mov edx, dword [esp + 0x134]
inc edx
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x4c]
jmp 0x405d17
mov esi, ecx
imul esi, esi
and esi, 3
cmp esi, 2
adc ecx, 0
mov eax, edx
mov edi, dword [esp + 0x94]
mov esi, 3
sub esi, ecx
xor esi, ecx
setne bl
movzx esi, bl
cmp ecx, esi
jb 0x405d00
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], eax
mov ecx, ebp
jmp 0x406ad9
mov bl, 0x24
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x4c]
cmp eax, esi
jne 0x405d6a
mov byte [esp + 0x60], 0x4e
mov byte [esp + 0x58], 0x1d
mov edx, eax
imul edx, edx
and edx, 3
cmp edx, 2
mov edx, eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x64], eax
jb 0x405dcf
jmp 0x405d7a
mov byte [esp + 0x60], 0x4e
mov byte [esp + 0x58], 0x1d
mov edx, eax
mov dword [esp + 0x44], esi
movzx esi, byte [edx]
movzx esi, word [esi + esi + str.________________________________H]
and esi, 8
mov edi, esi
or edi, 1
sete bh
movzx edi, bh
cmp esi, edi
jne 0x405da1
mov dword [esp + 0x34], edx
mov dword [esp + 0x64], edx
jmp 0x405dcf
mov edi, 0x1a
movzx ebx, bl
cmp ebx, 0x24
je 0x405dc8
mov esi, 0x14
mov edi, 0x10
cmp ebx, 0x5d
mov ebx, edx
je 0x406920
jmp 0x4068da
mov ebx, edx
jmp 0x406901
movzx edx, byte [esp + 0x60]
cmp edx, 0x4e
jne 0x405de0
mov byte [esp + 0x60], 0x4e
jmp 0x405de5
mov byte [esp + 0x60], 6
mov byte [esp + 0x33], 0x11
mov byte [esp + 0x4b], 0x20
mov ebx, ecx
mov eax, dword [esp + 0x44]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x78], eax
movzx ecx, byte [esp + 0x4b]
cmp ecx, 0x20
je 0x405e46
cmp ecx, 0x53
jne 0x405e8e
mov ecx, 0x16
mov byte [esp + 0x4b], 4
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x3c]
cmp esi, edi
jne 0x405ec0
mov edx, 3
sub edx, esi
xor edx, esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x18], edi
jne 0x406321
jmp 0x40629e
mov eax, ebx
mov ecx, 0xb
mov edi, dword [esp + 0x78]
mov ebx, dword [esp + 0x3c]
cmp edi, ebx
jne 0x405ecd
mov byte [esp + 0x4b], 0x53
mov edx, edi
or edx, 2
mov esi, edi
xor esi, 2
add esi, edx
mov dword [esp + 0x40], edi
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x6c], edx
mov ebp, dword [esp + 0x7c]
mov ebx, eax
jne 0x406321
jmp 0x406515
mov edx, 0xa
mov byte [esp + 0x4b], 0x20
mov ecx, dword [esp + 0x78]
mov esi, dword [esp + 0x3c]
cmp ecx, esi
mov eax, dword [esp + 0x80]
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x18], esi
jne 0x405ef0
jmp 0x406899
mov dword [esp + 0x40], esi
mov dword [esp + 0x18], edi
jmp 0x40629e
mov byte [esp + 0x4b], 0x53
mov dword [esp + 0x40], edi
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x6c], edx
mov ebp, dword [esp + 0x7c]
mov ebx, eax
jmp 0x406515
mov eax, ebx
mov ecx, 0xf
mov bl, byte [esp + 0x33]
movzx edx, bl
cmp edx, 0xd
mov edi, dword [esp + 0x18]
je 0x405f3b
cmp edx, 0x1f
jne 0x405f5e
mov dword [esp + 0x10], 5
mov ecx, 0xc
mov bl, 0x1f
lea edx, [edi - 1]
mov dword [esp + 0x3c], edx
movzx esi, byte [edi - 1]
movzx edx, word [esi + esi + str.________________________________H]
test dl, 8
mov dword [esp + 0x40], edi
jne 0x405fe7
cmp ecx, 0xc
jne 0x405f9b
mov dword [esp + 0x18], edi
mov byte [esp + 0x33], bl
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], ebp
mov ebx, eax
jmp 0x406321
mov ecx, 0xc
mov byte [esp + 0x33], 0x11
lea edx, [edi - 1]
mov dword [esp + 0x3c], edx
movzx edx, byte [edi - 1]
test byte [edx + edx + str.________________________________H], 8
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x80], edx
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x40], edi
mov ebx, eax
jne 0x405e01
jmp 0x406022
mov ecx, 0x19
mov byte [esp + 0x33], 0xd
lea edx, [edi - 1]
mov dword [esp + 0x3c], edx
movzx edx, byte [edi - 1]
test byte [edx + edx + str.________________________________H], 8
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x80], edx
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x18], edi
mov ebx, eax
je 0x406321
cmp ecx, 0x10
mov ecx, ebx
jne 0x405e01
jmp 0x406ad9
mov byte [esp + 0x33], 0x1f
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x40], edi
mov ebx, eax
mov eax, dword [esp + 0x10]
cmp eax, 5
jne 0x405cdf
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
jne 0x405e01
jmp 0x405cdf
cmp ecx, 0xc
jne 0x406047
mov edx, ecx
and edx, 1
xor edx, ecx
not edx
test edx, edx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ebp
jne 0x406321
mov dword [esp + 0x7c], ebp
xor ebp, ebp
mov cl, byte [esp + 0x70]
movzx edx, cl
cmp edx, 0x24
je 0x406104
mov ecx, 0xb
cmp edx, 0x48
je 0x4061ad
cmp edx, 0x63
jne 0x4061bd
lea esi, [esp + 0xd8]
mov edi, dword [esp + 0x8c]
jmp 0x4060ec
mov eax, ebp
or eax, 2
mov ecx, ebp
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
add ebp, eax
mov dword [esp + 8], edi
mov eax, dword [esp + 0x88]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.007c51d0
mov byte [esp + edi + 0xd8], 0
mov eax, dword [esp + 0x12c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.007c3f60
neg eax
sbb eax, eax
mov dword [esp + 0x90], eax
mov ecx, ebp
not ecx
and ecx, 1
add ecx, ebp
setne cl
movzx ecx, cl
cmp ebp, ecx
jb 0x406090
jmp 0x406ccc
lea esi, [esp + 0xd8]
mov edi, 0xffffffff
jmp 0x406191
mov eax, ebp
imul eax, eax
and eax, 3
cmp eax, 2
adc ebp, 0
mov ebx, dword [esp + 0x8c]
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x88]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.007c51d0
mov byte [esp + ebx + 0xd8], 0
mov eax, dword [esp + 0x12c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.007c3f60
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, 0
cmovne eax, edi
mov dword [esp + 0x90], eax
mov ecx, 3
sub ecx, ebp
xor ecx, ebp
setne cl
movzx ecx, cl
cmp ebp, ecx
jb 0x406120
jmp 0x406ccc
mov edi, dword [esp + 0x90]
mov eax, dword [esp + 0x6c]
jmp 0x406462
mov dword [esp + 0x10], ebx
lea edi, [esp + 0xd8]
mov eax, dword [esp + 0x90]
jmp 0x406240
mov esi, 0x13
mov byte [esp + 0x70], 0x63
mov eax, ebp
imul eax, eax
and eax, 3
cmp eax, 2
adc ebp, 0
mov ebx, dword [esp + 0x8c]
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x88]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.007c51d0
mov byte [esp + ebx + 0xd8], 0
mov eax, dword [esp + 0x12c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.007c3f60
neg eax
sbb eax, eax
mov ecx, ebp
and ecx, 1
xor ecx, ebp
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
cmp ebp, ecx
jb 0x4061e0
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x10]
jmp 0x406cb8
lea edx, [ebx + 1]
mov eax, dword [esp + 0x44]
cmp edx, eax
je 0x406951
mov dword [esp + 0x34], ebx
mov bl, 0x5d
mov esi, edx
imul esi, esi
and esi, 3
cmp esi, 2
mov dword [esp + 0x64], eax
jne 0x405d7a
jmp 0x405dcf
cmp ecx, 0xc
jne 0x4062ed
mov edi, dword [esp + 0x78]
lea esi, [edi + 1]
mov ebx, dword [esp + 0x80]
cmp esi, ebx
jae 0x406301
mov byte [esp + 0x5c], 0x30
mov edx, 0x13
mov ecx, esi
and ecx, 1
xor ecx, esi
mov dword [esp + 0x1c], esi
not ecx
test ecx, ecx
mov dword [esp + 0x68], edi
mov ebp, dword [esp + 0x7c]
mov ecx, ebp
mov dword [esp + 0x74], ebx
mov dword [esp + 0x28], ebp
mov esi, ebx
jne 0x4063c6
jmp 0x4069a4
mov eax, dword [esp + 0x80]
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x7c]
jmp 0x405ef0
mov dword [esp + 0x1c], esi
mov byte [esp + 0x5c], 0x30
mov dword [esp + 0x68], edi
mov eax, dword [esp + 0x7c]
mov ecx, eax
mov dword [esp + 0x74], ebx
mov dword [esp + 0x28], eax
jmp 0x4069a4
mov edx, 0xf
mov byte [esp + 0x3b], 0x55
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x40]
cmp edi, eax
jne 0x406361
mov dword [esp + 0x90], 0xffffffff
mov esi, 0xc
mov ecx, edi
and ecx, 1
xor ecx, edi
not ecx
test ecx, ecx
mov dword [esp + 0x2c], eax
jne 0x406a4f
jmp 0x40665f
mov dword [esp + 0x90], 0xffffffff
mov dword [esp + 0x2c], eax
jmp 0x40665f
mov dword [esp + 0x7c], edi
mov edx, 9
mov byte [esp + 0x3b], 0x42
mov edi, dword [esp + 0x2c]
cmp dword [esp + 0x78], edi
mov ebp, 0xa
jb 0x4063b4
mov byte [esp + 0x54], bl
mov byte [esp + 0x5c], 0x10
mov dword [esp + 0x8c], esi
xor ecx, ecx
test cl, cl
mov dword [esp + 0x6c], edi
mov esi, edi
je 0x4065f4
jmp 0x4063c6
mov byte [esp + 0x54], bl
mov byte [esp + 0x5c], 0x10
mov dword [esp + 0x8c], esi
mov esi, edi
cmp edx, 9
mov ebx, dword [esp + 0x7c]
mov eax, dword [esp + 0x80]
mov dword [esp + 0x74], eax
mov dword [esp + 0x80], esi
mov dword [esp + 0x7c], ebp
mov ecx, dword [esp + 0x28]
je 0x40641c
jmp 0x406849
mov byte [esp + 0x3b], 0x55
mov byte [esp + 0x5c], 0x10
mov ecx, esi
and ecx, 1
xor ecx, esi
not ecx
test ecx, ecx
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], edx
je 0x4065f4
mov edi, dword [esp + 0x90]
mov esi, dword [esp + 0x2c]
lea eax, [esi - 1]
mov cl, byte [esi - 1]
or cl, 0x20
movzx ecx, cl
cmp ecx, 0x68
jne 0x406503
mov dl, 0x3c
mov ecx, 0xf
movzx edx, dl
mov ebp, 0xa
cmp edx, 0x1d
jne 0x406543
mov dword [esp + 0x24], eax
mov eax, esi
mov dword [esp + 0x7c], 0xa
xor edx, edx
cmp ecx, 0xb
jne 0x406585
mov ebp, ebx
mov esi, ecx
or esi, 2
xor ecx, 2
add ecx, esi
je 0x406591
mov dword [esp + 0x80], eax
mov edi, 0xd
mov byte [esp + 0x70], 0x24
mov ebx, dword [esp + 0x8c]
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x88]
mov dword [esp + 4], eax
lea esi, [esp + 0xd8]
mov dword [esp], esi
call fcn.007c51d0
mov byte [esp + ebx + 0xd8], 0
mov eax, dword [esp + 0x12c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.007c3f60
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
xor edx, edx
cmp eax, ecx
mov eax, 0xffffffff
cmove eax, edx
mov dword [esp + 0x90], eax
mov ebx, ebp
jmp 0x406a83
mov dword [esp + 0x24], eax
mov ecx, 5
mov ebp, 0xa
mov dword [esp + 0x6c], esi
cmp ecx, 5
jne 0x405ef0
mov edx, ecx
and edx, 1
xor edx, ecx
not edx
test edx, edx
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
jne 0x4065f4
jmp 0x405ef0
xor ecx, ecx
mov edx, esi
jmp 0x406568
mov edx, 3
sub edx, ecx
xor edx, ecx
setne dl
movzx edx, dl
add ecx, edx
mov ebp, 0x10
mov edx, eax
test ecx, ecx
je 0x406550
mov dword [esp + 0x6c], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
jmp 0x4065f4
mov esi, eax
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 0x24]
jmp 0x4065c5
mov esi, eax
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x24]
mov ebx, ebp
mov ebp, ecx
jmp 0x4065c5
mov ecx, edx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc edx, 0
mov ebp, 0x10
mov esi, eax
test edx, edx
jne 0x4065d6
mov ecx, edx
and ecx, 1
xor ecx, edx
not ecx
test ecx, ecx
jne 0x4065b0
mov dword [esp + 0x6c], esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
mov dword [esp + 0x90], edi
mov cl, byte [esp + 0x5c]
movzx edx, cl
cmp edx, 0x10
je 0x4066e5
mov ecx, 0xc
cmp edx, 0x30
jne 0x40673a
mov edi, dword [esp + 0x78]
lea esi, [edi + 1]
mov eax, dword [esp + 0x6c]
cmp esi, eax
jae 0x4067ab
mov byte [esp + 0x5c], 0x2a
mov edx, 0x16
mov ecx, esi
mov dword [esp + 0x1c], esi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ebp
mov ecx, ebp
mov dword [esp + 0x74], eax
mov dword [esp + 0x28], ebp
mov ebx, ebp
mov dword [esp + 0x68], edi
jae 0x4069a4
cmp edx, 0xf
je 0x406673
xor ecx, ecx
test cl, cl
jne 0x406673
mov ecx, dword [esp + 0x28]
jmp 0x406849
mov ecx, 9
movzx edx, byte [esp + 0x3b]
cmp edx, 0x3d
je 0x40675d
cmp edx, 0x55
je 0x406785
cmp edx, 0x5c
jne 0x4067d2
mov edx, 0x10
mov byte [esp + 0x3b], 0x5c
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x78]
cmp ecx, esi
mov ebp, 0xa
jb 0x406994
mov byte [esp + 0x5c], 0x10
imul ecx, ecx
and ecx, 3
cmp ecx, 3
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], esi
mov ecx, ebx
jne 0x4065f4
jmp 0x406b76
mov ecx, 1
mov ebx, dword [esp + 0x78]
lea edi, [ebx + 1]
mov eax, dword [esp + 0x6c]
cmp edi, eax
jb 0x406809
mov byte [esp + 0x5c], 0x10
mov edx, 0xe
mov esi, edi
mov dword [esp + 0x1c], edi
imul esi, esi
and esi, 3
cmp esi, 3
mov dword [esp + 0x68], ebx
mov ebx, ebp
mov dword [esp + 0x74], eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ebp
jne 0x406c78
jmp 0x40682b
mov ebx, dword [esp + 0x7c]
mov eax, dword [esp + 0x80]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ebp
jmp 0x40629e
mov eax, dword [esp + 0x80]
mov dword [esp + 0x6c], eax
mov edi, ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
mov esi, dword [esp + 0x8c]
mov bl, byte [esp + 0x54]
jmp 0x406bbb
mov edi, 0xd
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x4c]
jmp 0x405824
mov dword [esp + 0x1c], esi
mov byte [esp + 0x5c], 0x2a
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x68], edi
mov ecx, ebp
mov dword [esp + 0x74], eax
mov dword [esp + 0x28], ebp
jmp 0x4069a4
mov ebp, 0xa
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x78]
cmp esi, edx
jb 0x4063ee
mov byte [esp + 0x3b], 0x55
mov byte [esp + 0x5c], 0x10
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
mov dword [esp + 0x6c], edx
jmp 0x4065f4
mov dword [esp + 0x1c], edi
mov byte [esp + 0x5c], 0x10
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x68], ebx
mov ebx, ebp
mov dword [esp + 0x74], eax
mov dword [esp + 0x28], ebp
cmp ecx, 1
je 0x406845
imul ecx, ecx
and ecx, 3
cmp ecx, 3
mov ecx, dword [esp + 0x28]
jne 0x405c94
jmp 0x406849
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x78]
movzx edx, byte [edi]
cmp edx, 0x30
jne 0x406882
mov edx, 0x14
mov byte [esp + 0x22], 9
mov esi, dword [esp + 0x1c]
movzx ebx, byte [esi]
cmp ebx, 0x58
je 0x40688f
movzx edx, bl
cmp edx, 0x78
mov dword [esp + 0x68], edi
mov dword [esp + 0x28], ecx
mov ebx, ecx
je 0x4068b8
jmp 0x4069a4
mov dword [esp + 0x68], edi
mov dword [esp + 0x28], ecx
jmp 0x4069a4
mov dword [esp + 0x28], ecx
mov dword [esp + 0x68], edi
mov ebx, ecx
cmp edx, 0xa
jne 0x4068b4
mov ecx, edx
or ecx, 2
xor edx, 2
add edx, ecx
mov ecx, dword [esp + 0x28]
jne 0x406321
jmp 0x4068b8
mov ecx, dword [esp + 0x28]
mov edi, 0xe
mov esi, 5
movzx edx, byte [esp + 0x22]
cmp edx, 9
mov dword [esp + 0x28], ecx
mov ecx, ebx
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x34]
jne 0x406901
mov dword [esp + 0x34], ebx
cmp esi, 5
jne 0x40695e
mov byte [esp + 0x22], 0x1a
mov ecx, 0x10
mov esi, dword [esp + 0x78]
lea esi, [esi + 2]
mov dword [esp + 0x68], esi
mov dword [esp + 0x64], edx
jmp 0x4069a4
cmp edi, 0xe
jne 0x406933
mov edi, 0xf
mov byte [esp + 0x22], 9
mov ecx, dword [esp + 0x78]
lea ecx, [ecx + 2]
mov dword [esp + 0x68], ecx
mov ecx, 0x10
cmp edi, 0xf
jne 0x40626f
mov dword [esp + 0x34], ebx
mov dword [esp + 0x64], edx
jmp 0x4069a4
lea edx, [ebx + 1]
mov eax, dword [esp + 0x44]
cmp edx, eax
je 0x406951
mov dword [esp + 0x34], ebx
mov bl, 0x4d
mov esi, edx
and esi, 1
inc esi
xor esi, edx
jmp 0x40628f
mov dword [esp + 0x34], ebx
mov dword [esp + 0x64], eax
jmp 0x405dcf
mov edi, 0xb
mov bl, 0x24
mov edx, dword [esp + 0x34]
inc edx
mov eax, dword [esp + 0x44]
cmp edx, eax
mov dword [esp + 0x64], eax
jne 0x405d7a
cmp edi, 0xb
je 0x405dcf
xor edx, edx
test dl, dl
mov ebx, ecx
je 0x405cdf
jmp 0x405dcf
mov byte [esp + 0x5c], 0x10
mov dword [esp + 0x6c], esi
mov ecx, ebx
jmp 0x406b76
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x74]
cmp ebx, eax
jae 0x406b21
mov edx, ebx
imul edx, edx
and edx, 3
cmp edx, 1
ja 0x406b21
mov edx, 0xc
movzx edi, byte [ebx]
cmp edi, 0x2d
jne 0x406b49
mov dword [esp + 0x90], 0xffffffff
mov byte [esp + 0x54], 0x74
mov esi, 6
imul edi, edi
and edi, 3
cmp edi, 2
mov eax, dword [esp + 0x80]
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0x88], ebx
mov dword [esp + 0x84], ecx
jae 0x406b76
cmp esi, 6
mov bl, byte [esp + 0x23]
je 0x406ccc
mov edx, esi
and edx, 1
inc edx
xor edx, esi
je 0x406ccc
movzx edx, bl
cmp edx, 0x3e
je 0x405c37
mov edi, 0xe
mov esi, 8
cmp edx, 0x5c
mov ebx, ecx
jne 0x406a83
cmp esi, 8
jne 0x406ccc
mov ecx, 3
sub ecx, esi
xor ecx, esi
je 0x406ccc
mov byte [esp + 0x23], 0x3e
mov edx, dword [esp + 0x14]
lea eax, [edx - 1]
mov dword [esp + 0x94], eax
movzx ecx, byte [edx - 1]
cmp ecx, 0x22
jmp 0x406ac2
cmp edi, 0xd
jne 0x406a99
mov ecx, edi
and ecx, 1
xor ecx, edi
not ecx
test ecx, ecx
jne 0x406ccc
mov edx, dword [esp + 0x14]
lea eax, [edx - 1]
mov dword [esp + 0x94], eax
movzx ecx, byte [edx - 1]
cmp ecx, 0x22
je 0x406d22
mov byte [esp + 0x23], 0x4d
imul ecx, ecx
and ecx, 3
cmp ecx, 3
mov ecx, dword [esp + 0x134]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], edx
mov ecx, ebx
je 0x405cdf
movzx edx, byte [esp + 0x58]
cmp edx, 0x5b
je 0x405d39
mov esi, 4
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x4c]
cmp eax, edi
je 0x406ca6
mov byte [esp + 0x60], 0x4e
mov byte [esp + 0x58], 0x5b
mov bl, 0x24
xor edx, edx
test dl, dl
mov edx, eax
mov dword [esp + 0x44], edi
mov dword [esp + 0x64], eax
je 0x405d7a
jmp 0x406cb8
mov byte [esp + 0x54], 0x74
mov eax, dword [esp + 0x80]
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x7c]
mov eax, ecx
mov dword [esp + 0x88], ebx
mov ebx, eax
mov dword [esp + 0x84], ecx
jmp 0x406b90
mov dword [esp + 0x90], 0xffffffff
mov byte [esp + 0x54], 0x74
mov eax, dword [esp + 0x80]
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0x88], ebx
mov dword [esp + 0x84], ecx
cmp edx, 0xc
jne 0x406c9f
mov esi, 3
sub esi, edx
xor esi, edx
mov ebx, ecx
je 0x40641c
mov dword [esp + 0x7c], ebp
mov ebp, ebx
mov ecx, 0x17
mov bl, byte [esp + 0x54]
movzx edx, bl
cmp edx, 0x21
jne 0x406c23
mov edi, ebp
mov eax, dword [esp + 0x74]
mov dword [esp + 0x80], eax
mov esi, dword [esp + 0x8c]
cmp ecx, 9
je 0x406375
xor ecx, ecx
test cl, cl
jne 0x406375
mov esi, dword [esp + 0x80]
mov edx, esi
mov eax, dword [esp + 0x88]
sub edx, eax
cmp edx, 0x31
jl 0x406cd5
mov dword [esp + 0x90], 0xffffffff
mov byte [esp + 0x54], 0x74
mov byte [esp + 0x70], 0x24
mov ecx, edx
not ecx
and ecx, 1
add ecx, edx
mov dword [esp + 0x8c], edx
mov ebx, edi
mov dword [esp + 0x74], esi
mov ebp, dword [esp + 0x7c]
jne 0x406ccc
jmp 0x406047
mov ecx, 0x14
mov byte [esp + 0x70], 0x24
mov eax, dword [esp + 0x74]
mov edi, eax
mov eax, dword [esp + 0x88]
sub edi, eax
cmp edi, 0x31
jl 0x406d00
mov dword [esp + 0x90], 0xffffffff
mov byte [esp + 0x54], 0x21
mov edx, 0x1d
mov esi, edi
and esi, 1
xor esi, edi
mov dword [esp + 0x8c], edi
not esi
test esi, esi
mov ebx, ebp
mov ebp, dword [esp + 0x7c]
je 0x406022
cmp edx, 0xe
jne 0x406ccc
mov ecx, edx
not ecx
and ecx, 1
add ecx, edx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ebp
mov ecx, ebx
jne 0x4069a4
jmp 0x406ccc
mov ebx, ecx
jmp 0x40641c
mov byte [esp + 0x60], 0x4e
mov byte [esp + 0x58], 0x5b
mov dword [esp + 0x64], eax
mov dword [esp + 0x44], edi
cmp esi, 4
jne 0x406ccc
mov edx, esi
not edx
and edx, 1
add edx, esi
jne 0x405dcf
mov eax, dword [esp + 0x90]
jmp 0x406d3b
mov dword [esp + 0x90], 0xffffffff
mov byte [esp + 0x54], 0x74
mov byte [esp + 0x70], 0x24
mov dword [esp + 0x8c], edx
mov ebx, edi
mov dword [esp + 0x74], esi
mov ebp, dword [esp + 0x7c]
jmp 0x406047
mov dword [esp + 0x90], 0xffffffff
mov byte [esp + 0x54], 0x21
mov dword [esp + 0x8c], edi
mov ebx, ebp
mov ebp, dword [esp + 0x7c]
jmp 0x406022
mov byte [esp + 0x23], 0x4d
mov ecx, dword [esp + 0x134]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], edx
jmp 0x405cdf
add esp, 0x118
pop esi
pop edi
pop ebx
pop ebp
ret
mov byte [esp + 0x4c], bl
mov ebp, 0xa
cmp esi, 4
jne 0x406d71
mov edx, esi
or edx, 2
xor esi, 2
add esi, edx
mov dword [esp + 0x78], edi
mov dword [esp + 0x60], edi
jne 0x407227
jmp 0x4072ab
mov dword [esp + 0x78], edi
jmp 0x4072ab
mov esi, 0x15
mov byte [esp + 0x4b], 0x4d
lea ecx, [edi - 1]
mov dword [esp + 0x44], ecx
movzx edx, byte [edi - 1]
cmp edx, 0x22
je 0x406db5
xor edx, edx
test dl, dl
mov edx, dword [esp + 0x134]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], edi
je 0x406e41
jmp 0x407541
mov edx, dword [esp + 0x134]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], edi
jmp 0x407541
mov ebx, 0xf
mov ecx, dword [esp + 0x2c]
lea edx, [ecx - 1]
mov dword [esp + 0x44], edx
movzx esi, byte [ecx - 1]
cmp esi, 0x27
je 0x406e07
imul esi, esi
and esi, 3
cmp esi, 2
mov edx, dword [esp + 0x134]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], ecx
jne 0x406e41
jmp 0x406fef
mov edx, dword [esp + 0x134]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], ecx
jmp 0x406fef
inc ecx
mov eax, edx
mov dword [esp + 0x94], edi
mov esi, ecx
not esi
and esi, 1
add esi, ecx
setne bl
movzx esi, bl
cmp ecx, esi
jb 0x406e20
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x94]
cmp eax, edx
je 0x406e76
mov byte [esp + 0x28], 0x2e
mov byte [esp + 0x33], 0x50
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
mov dword [esp + 0x5c], eax
mov edi, eax
mov dword [esp + 0x70], edx
mov edx, eax
jne 0x406f55
jmp 0x406e8a
mov byte [esp + 0x28], 0x2e
mov byte [esp + 0x33], 0x50
mov dword [esp + 0x5c], eax
mov edi, eax
mov dword [esp + 0x70], edx
mov edx, edi
and edx, 1
xor edx, edi
not edx
mov ebx, 0xe
mov esi, dword [esp + 0x70]
nop dword [eax]
cmp edi, esi
mov ecx, esi
jne 0x406eaf
mov esi, 3
test edx, edx
jne 0x406ef1
mov esi, ecx
movzx ecx, byte [esi - 1]
dec esi
movzx ecx, word [ecx + ecx + str.________________________________H]
test cl, 8
jne 0x406ea0
inc esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x54], edi
mov dword [esp + 0x6c], edi
cmp ebx, 0xa
jne 0x407080
imul ebx, ebx
and ebx, 3
cmp ebx, 2
mov edi, dword [esp + 0x60]
jb 0x4072ab
jmp 0x407080
mov dword [esp + 0x58], edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x6c], edi
mov eax, dword [esp + 0x7c]
jmp 0x407686
imul esi, esi
and esi, 3
cmp esi, 3
je 0x4071de
mov eax, dword [esp + 0x40]
inc eax
cmp eax, edx
jne 0x406f48
mov byte [esp + 0x28], 0x2e
mov esi, 8
mov ecx, eax
or ecx, 2
mov edi, edx
mov edx, eax
mov dword [esp + 0x5c], eax
xor edx, 2
add edx, ecx
mov edx, edi
mov dword [esp + 0x70], edx
jne 0x40773c
jmp 0x406f55
mov dword [esp + 0x5c], eax
mov byte [esp + 0x28], 0x2e
mov dword [esp + 0x70], edx
mov esi, 7
mov cl, byte [esp + 0x33]
movzx ecx, cl
cmp ecx, 0x50
jne 0x406fa4
mov esi, 0xf
mov byte [esp + 0x33], 0x25
mov eax, dword [esp + 0x5c]
movzx ecx, byte [eax]
movzx ecx, word [ecx + ecx + str.________________________________H]
and ecx, 8
mov edx, ecx
or edx, 1
sete dl
movzx edx, dl
cmp ecx, edx
mov ecx, eax
mov dword [esp + 0x40], eax
mov edi, dword [esp + 0x78]
jne 0x407040
jmp 0x407128
mov dword [esp + 0x54], edx
cmp esi, 7
je 0x40700b
mov edx, esi
and edx, 1
inc edx
xor edx, esi
je 0x40700b
mov ecx, dword [esp + 0x6c]
lea edi, [ecx + 1]
mov esi, dword [esp + 0x60]
cmp edi, esi
jb 0x407071
mov byte [esp + 0x4c], 0x17
mov byte [esp + 0x68], 0x60
mov ebx, 0xa
xor edx, edx
test dl, dl
mov dword [esp + 0x64], ecx
mov dword [esp + 0x74], ebp
mov dword [esp + 0x50], esi
jne 0x407470
cmp ebx, 0xa
je 0x407600
mov edx, ebx
and edx, 1
inc edx
xor edx, ebx
jne 0x407566
jmp 0x407600
mov ebx, 1
mov byte [esp + 0x33], 0x50
mov eax, dword [esp + 0x5c]
movzx edx, byte [eax]
movzx edx, word [edx + edx + str.________________________________H]
and edx, 8
mov esi, edx
or esi, 1
sete cl
movzx ecx, cl
cmp edx, ecx
mov edi, eax
mov dword [esp + 0x40], eax
je 0x407a0e
mov dword [esp + 0x5c], eax
mov esi, 0x14
mov ebx, 0x1c
movzx ecx, byte [esp + 0x28]
cmp ecx, 0x2e
mov ecx, dword [esp + 0x70]
mov edi, ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x54], eax
mov edx, ecx
je 0x4071d5
jmp 0x407b6d
mov byte [esp + 0x4c], 0x17
mov byte [esp + 0x68], 0x60
jmp 0x407470
mov esi, 6
mov eax, dword [esp + 0x6c]
cmp eax, dword [esp + 0x58]
je 0x4070f8
xor edx, edx
test dl, dl
jne 0x4070f8
mov al, 0x1c
movzx eax, al
cmp eax, 0x1c
je 0x40710c
cmp eax, 0x3d
jne 0x407188
mov ebp, 0xa
mov byte [esp + 0x4c], 0x67
mov esi, dword [esp + 0x58]
lea eax, [esi - 1]
mov dword [esp + 0x34], eax
movzx ebx, byte [esi - 1]
mov dword [esp + 0x84], 0xffffffff
cmp ebx, 0x48
je 0x4071eb
mov ecx, 0x12
movzx edx, bl
cmp edx, 0x68
mov dword [esp + 0x60], esi
mov dword [esp + 0x78], esi
mov ebx, 0xa
je 0x406ed0
jmp 0x4073cc
mov dword [esp + 0x84], 0xffffffff
mov eax, dword [esp + 0x58]
jmp 0x40720c
mov dword [esp + 0x84], 0xffffffff
mov esi, 0x1a
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x5c], eax
cmp esi, 0xf
je 0x40717d
mov edx, esi
and edx, 1
inc edx
xor edx, esi
je 0x40717d
mov dword [esp + 0x54], ecx
mov esi, 0x10
mov bl, 0x67
lea ecx, [edi - 1]
mov dword [esp + 0x34], ecx
movzx edx, byte [edi - 1]
cmp edx, 0x48
je 0x406d46
mov byte [esp + 0x4c], 0x67
mov ebp, 0xa
movzx edx, dl
cmp edx, 0x68
mov dword [esp + 0x78], edi
mov dword [esp + 0x60], edi
je 0x4072ab
jmp 0x4073d9
mov dword [esp + 0x78], edi
mov edi, ecx
jmp 0x406e8a
mov esi, 9
mov byte [esp + 0x4c], 0x67
mov ebp, dword [esp + 0x58]
lea ecx, [ebp - 1]
movzx ebx, byte [ebp - 1]
mov dword [esp + 0x84], 0xffffffff
cmp ebx, 0x48
je 0x4071f6
mov dword [esp + 0x34], ecx
movzx edx, bl
cmp edx, 0x68
mov edi, ebp
mov dword [esp + 0x78], ebp
mov dword [esp + 0x60], ebp
mov edx, dword [esp + 0x70]
mov esi, 0xa
mov ebp, 0xa
je 0x4072ab
cmp esi, 0xa
jne 0x406f06
mov dword [esp + 0x70], edx
mov edi, dword [esp + 0x78]
jmp 0x4073d9
mov edi, esi
mov dword [esp + 0x78], esi
jmp 0x4072ab
mov dword [esp + 0x34], ecx
mov dword [esp + 0x60], ebp
mov dword [esp + 0x78], ebp
mov ebp, 0xa
jmp 0x40728f
cmp esi, 6
je 0x407411
mov dword [esp + 0x78], eax
mov edx, esi
and edx, 1
inc edx
xor edx, esi
je 0x407411
movzx esi, byte [esp + 0x4b]
cmp esi, 0xc
mov edi, dword [esp + 0x2c]
je 0x407319
cmp esi, 0x4d
je 0x407354
cmp esi, 0x75
jne 0x406d7a
mov ecx, 0xb
mov byte [esp + 0x4b], 0xc
lea edx, [edi - 1]
mov dword [esp + 0x44], edx
movzx ebx, byte [edi - 1]
cmp ebx, 0x22
jne 0x4073ba
mov esi, 0xd
imul ebx, ebx
and ebx, 3
cmp ebx, 2
mov edx, dword [esp + 0x134]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], edi
jae 0x4073cc
cmp esi, 9
jne 0x407566
mov edx, esi
not edx
and edx, 1
add edx, esi
mov edi, dword [esp + 0x60]
je 0x407566
xor ebx, ebx
mov ecx, dword [esp + 0x34]
jmp 0x4072da
mov esi, 0x15
mov edx, ebx
imul edx, edx
and edx, 3
cmp edx, 2
adc ebx, 0
mov ebp, 0x10
mov edi, ecx
mov edx, 3
sub edx, ebx
xor edx, ebx
setne dl
movzx edx, dl
cmp ebx, edx
jb 0x4072c0
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
cmp esi, 6
je 0x407396
mov dword [esp + 0x74], ecx
xor edx, edx
test dl, dl
mov dword [esp + 0x78], edi
je 0x4073d9
jmp 0x407546
mov byte [esp + 0x4b], 0x75
lea ecx, [edi - 1]
mov dword [esp + 0x44], ecx
movzx ecx, byte [edi - 1]
cmp ecx, 0x22
jne 0x4073a3
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov ecx, dword [esp + 0x134]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x94], edi
jb 0x407566
jmp 0x406e41
mov byte [esp + 0x4b], 0x64
lea ecx, [edi - 1]
mov dword [esp + 0x44], ecx
movzx esi, byte [edi - 1]
cmp esi, 0x22
jne 0x4073a3
mov ecx, edi
mov edi, 2
mov edx, 3
sub edx, esi
xor edx, esi
mov edx, dword [esp + 0x134]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], ecx
jne 0x4074dc
jmp 0x406e41
mov dword [esp + 0x74], ecx
mov dword [esp + 0x78], edi
jmp 0x407546
mov ecx, dword [esp + 0x134]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x94], edi
jmp 0x406e41
mov edx, dword [esp + 0x134]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x94], edi
cmp ecx, 0xb
mov edi, dword [esp + 0x78]
je 0x406e41
mov ebx, 0x1b
movzx edx, byte [esp + 0x4c]
cmp edx, 0x24
je 0x407404
mov ebx, 1
mov esi, 0x16
cmp edx, 0x67
mov dword [esp + 0x78], edi
je 0x4078ca
jmp 0x406fa8
mov dword [esp + 0x78], edi
mov eax, dword [esp + 0x7c]
jmp 0x4076a7
mov eax, dword [esp + 0x84]
jmp 0x406d3b
mov ecx, dword [esp + 0x6c]
lea edi, [ecx + 1]
mov ebx, dword [esp + 0x60]
cmp edi, ebx
jae 0x407455
mov byte [esp + 0x4c], 0x24
mov byte [esp + 0x68], 0x60
mov edx, edi
or edx, 2
mov esi, edi
xor esi, 2
add esi, edx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x74], ebp
mov dword [esp + 0x50], ebx
jne 0x407470
jmp 0x407600
mov byte [esp + 0x4c], 0x24
mov byte [esp + 0x68], 0x60
mov dword [esp + 0x64], ecx
mov dword [esp + 0x74], ebp
mov dword [esp + 0x50], ebx
jmp 0x407600
mov ecx, dword [esp + 0x6c]
movzx esi, byte [ecx]
cmp esi, 0x30
je 0x40749f
mov edx, esi
and edx, 1
inc edx
xor edx, esi
je 0x40749f
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x64], eax
mov dword [esp + 0x74], ebp
mov eax, dword [esp + 0x60]
mov dword [esp + 0x50], eax
jmp 0x407600
mov dl, 0x16
movzx edx, dl
cmp edx, 0x16
jne 0x4074f6
mov esi, 7
mov byte [esp + 0x3b], 7
movzx edx, byte [edi]
cmp edx, 0x58
je 0x40752d
mov edi, 1
movzx edx, dl
cmp edx, 0x78
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x74], ebp
mov eax, dword [esp + 0x60]
mov dword [esp + 0x50], eax
je 0x407546
mov edx, edi
imul edx, edx
and edx, 3
cmp edx, 2
sbb edx, edx
and edx, 1
cmp edi, edx
je 0x407600
jmp 0x407566
mov esi, 6
mov byte [esp + 0x3b], 7
movzx edx, byte [edi]
cmp edx, 0x58
je 0x407cd1
movzx edx, dl
cmp edx, 0x78
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x74], ebp
mov eax, dword [esp + 0x60]
mov dword [esp + 0x50], eax
je 0x407546
jmp 0x407600
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x74], ebp
mov eax, dword [esp + 0x60]
mov dword [esp + 0x50], eax
cmp esi, 7
jne 0x407566
mov ch, byte [esp + 0x3b]
movzx edx, ch
cmp edx, 0xb
je 0x40757d
mov esi, 0x11
cmp edx, 0x6a
jne 0x4075bc
mov byte [esp + 0x3b], 7
jmp 0x4075ed
xor ecx, ecx
mov edx, dword [esp + 0x134]
inc edx
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x7c]
jmp 0x406e2a
xor eax, eax
mov edx, dword [esp + 0x6c]
lea esi, [edx + 2]
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x74]
jmp 0x40759a
mov ch, 0x6a
inc eax
mov ebx, 0x10
mov edi, esi
mov edx, eax
imul edx, edx
and edx, 3
cmp edx, 2
sbb edx, edx
and edx, 1
cmp eax, edx
jb 0x407590
mov dword [esp + 0x74], ebx
mov dword [esp + 0x64], edi
mov byte [esp + 0x3b], ch
jmp 0x407600
mov edi, ebp
mov ebp, dword [esp + 0x2c]
mov cl, byte [esp + 0x4b]
mov bl, byte [esp + 0x4c]
mov byte [esp + 0x4c], bl
mov byte [esp + 0x4b], cl
mov dword [esp + 0x2c], ebp
cmp esi, 7
mov ebp, edi
je 0x407646
imul esi, esi
and esi, 3
cmp esi, 3
je 0x407646
mov byte [esp + 0x3b], 0xb
mov dword [esp + 0x74], 0x10
mov eax, dword [esp + 0x6c]
lea eax, [eax + 2]
mov dword [esp + 0x64], eax
movzx eax, byte [esp + 0x68]
cmp eax, 0x23
jne 0x4076c3
mov cl, 0x60
mov ch, 0x63
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x50]
cmp edi, esi
jae 0x407794
mov eax, edi
imul eax, eax
and eax, 3
cmp eax, 1
mov ebx, dword [esp + 0x74]
jbe 0x4076ea
mov byte [esp + 0x3c], 0x63
mov byte [esp + 0x68], 0x60
jmp 0x4077d2
mov byte [esp + 0x3b], ch
mov esi, 0x16
mov byte [esp + 0x4b], 0x4d
mov edi, dword [esp + 0x134]
movzx edx, byte [edi]
cmp edx, 0x22
je 0x40778b
mov esi, 0xb
mov ebx, 0x10
movzx edx, dl
cmp edx, 0x27
mov eax, edi
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x94], ecx
jne 0x4076a7
cmp esi, 3
jne 0x406dcc
mov dword [esp + 0x7c], eax
imul esi, esi
and esi, 3
cmp esi, 2
jb 0x407080
jmp 0x406dcc
cmp ebx, 0x10
je 0x406e3d
mov dword [esp + 0x7c], eax
xor edx, edx
test dl, dl
je 0x40741d
jmp 0x406e41
mov cl, 0x23
mov ch, 0x63
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x50]
cmp edi, esi
jae 0x4077a0
mov eax, 3
sub eax, edi
xor eax, edi
mov ebx, dword [esp + 0x74]
je 0x4077c8
mov byte [esp + 0x68], cl
mov eax, 4
movzx edx, byte [edi]
cmp edx, 0x2d
je 0x40775e
imul edx, edx
and edx, 3
cmp edx, 3
je 0x40775e
mov dword [esp + 0x50], esi
mov byte [esp + 0x3c], ch
mov esi, 0xc
mov dword [esp + 0x84], 0xffffffff
mov edx, dword [esp + 0x70]
mov dword [esp + 0x90], edi
mov dword [esp + 0x64], edi
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x74], ebx
mov edi, dword [esp + 0x54]
cmp esi, 8
jne 0x4077ea
mov ecx, esi
or ecx, 2
xor esi, 2
add esi, ecx
mov dword [esp + 0x70], edx
jne 0x406e8a
jmp 0x4077ea
mov dword [esp + 0x50], esi
mov byte [esp + 0x3c], ch
mov ecx, edi
mov dword [esp + 0x64], ecx
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0x70]
mov dword [esp + 0x90], ecx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x74], ebx
jmp 0x40784b
mov eax, dword [esp + 0x78]
jmp 0x40720c
mov byte [esp + 0x3c], 0x63
mov byte [esp + 0x68], 0x60
jmp 0x4077aa
mov byte [esp + 0x3c], 0x63
mov byte [esp + 0x68], 0x23
mov edx, dword [esp + 0x70]
mov eax, edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x8c], eax
jmp 0x4077ea
mov byte [esp + 0x3c], 0x63
mov byte [esp + 0x68], 0x23
mov edx, dword [esp + 0x70]
mov eax, edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], ebx
movzx eax, byte [esp + 0x3c]
cmp eax, 7
je 0x407873
cmp eax, 0x63
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x50]
jne 0x40791d
mov esi, edx
mov edx, ecx
sub edx, eax
cmp edx, 0x30
jg 0x407c5a
mov dword [esp + 0x84], 0xffffffff
mov ecx, edx
and ecx, 1
inc ecx
xor ecx, edx
mov dword [esp + 0x88], edx
mov edx, esi
je 0x407411
mov eax, 0x11
mov byte [esp + 0x80], 0x63
mov byte [esp + 0x3c], 0x63
cmp eax, 4
jne 0x40795b
mov ecx, 3
sub ecx, eax
xor ecx, eax
mov dword [esp + 0x84], 0xffffffff
jne 0x407411
jmp 0x40795b
mov esi, edx
mov eax, dword [esp + 0x50]
mov edx, eax
mov eax, dword [esp + 0x90]
sub edx, eax
cmp edx, 0x30
jg 0x407c71
mov ecx, edx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
je 0x407c88
mov dword [esp + 0x84], 0xffffffff
mov dword [esp + 0x88], edx
mov ebx, 0xf
mov byte [esp + 0x3c], 2
mov byte [esp + 0x80], 0x63
mov dword [esp + 0x54], edi
mov dword [esp + 0x70], esi
mov edx, ebx
and edx, 1
xor edx, ebx
cmp edx, 0xffffffff
setne dl
movzx edx, dl
cmp ebx, edx
jne 0x407953
mov ecx, dword [esp + 0x6c]
lea edi, [ecx + 1]
mov esi, dword [esp + 0x60]
cmp edi, esi
jae 0x407c9f
mov byte [esp + 0x4c], 0x67
mov byte [esp + 0x68], 0x60
mov edx, edi
imul edx, edx
and edx, 3
cmp edx, 2
mov dword [esp + 0x64], ecx
mov dword [esp + 0x74], ebp
mov dword [esp + 0x50], esi
jb 0x407470
jmp 0x407600
sub ecx, eax
cmp ecx, 0x30
jg 0x407cba
mov dword [esp + 0x84], 0xffffffff
mov dword [esp + 0x88], ecx
xor ecx, ecx
test cl, cl
jne 0x407411
mov byte [esp + 0x3c], 7
mov byte [esp + 0x80], 0x63
jmp 0x40795b
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0x70]
mov al, byte [esp + 0x80]
movzx eax, al
cmp eax, 0x33
je 0x407a2f
mov dword [esp + 0x54], ebp
xor ebp, ebp
cmp eax, 0x51
je 0x407ac3
mov dword [esp + 0x70], edx
cmp eax, 0x63
jne 0x407ba9
mov ebx, 5
mov byte [esp + 0x80], 0x5b
mov ebp, dword [esp + 0x88]
mov dword [esp + 8], ebp
mov eax, dword [esp + 0x90]
mov dword [esp + 4], eax
lea esi, [esp + 0x98]
mov dword [esp], esi
call fcn.007c51d0
mov byte [esp + ebp + 0x98], 0
mov eax, dword [esp + 0x138]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.007c4280
test eax, eax
setne cl
mov edx, eax
and edx, 1
xor edx, eax
cmp edx, 0xffffffff
setne al
and al, cl
movzx eax, al
shl eax, 0x1f
sar eax, 0x1f
mov dword [esp + 0x84], eax
mov ebp, dword [esp + 0x54]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x5c], eax
mov ecx, ebx
and ecx, 1
xor ecx, ebx
cmp ecx, 0xffffffff
setne cl
movzx ecx, cl
cmp ebx, ecx
je 0x406e8a
jmp 0x407411
mov ebx, 0xa
mov byte [esp + 0x80], 0x63
mov dword [esp + 0x54], ebp
mov edi, dword [esp + 0x88]
mov dword [esp + 8], edi
mov eax, dword [esp + 0x90]
mov dword [esp + 4], eax
lea esi, [esp + 0x98]
mov dword [esp], esi
call fcn.007c51d0
mov byte [esp + edi + 0x98], 0
mov eax, dword [esp + 0x138]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.007c4280
test eax, eax
setne cl
mov edx, 3
sub edx, eax
xor edx, eax
setne al
and al, cl
movzx eax, al
shl eax, 0x1f
sar eax, 0x1f
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x50]
mov edx, dword [esp + 0x7c]
mov edi, dword [esp + 0x94]
jmp 0x4058f2
mov dword [esp + 0x70], edx
lea edi, [esp + 0x98]
jmp 0x407b42
mov esi, 0xe
mov byte [esp + 0x80], 0x33
inc ebp
mov ebx, dword [esp + 0x88]
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x90]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.007c51d0
mov byte [esp + ebx + 0x98], 0
mov eax, dword [esp + 0x138]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.007c4280
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
mov eax, 0
mov ecx, 0xffffffff
cmovne eax, ecx
mov ecx, ebp
or ecx, 2
mov edx, ebp
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
cmp ebp, ecx
jb 0x407ad0
mov dword [esp + 0x84], eax
mov edi, dword [esp + 0x70]
mov ebp, dword [esp + 0x54]
mov ebx, esi
cmp ebx, 0xe
je 0x407411
mov byte [esp + 0x28], 0x4b
mov eax, dword [esp + 0x40]
inc eax
cmp eax, edi
jne 0x407c4b
mov ecx, eax
or ecx, 2
mov edx, eax
mov dword [esp + 0x5c], eax
xor edx, 2
add edx, ecx
mov dword [esp + 0x70], edi
mov edx, edi
jne 0x406e8a
jmp 0x406f55
lea edi, [esp + 0x98]
mov dword [esp + 0x84], eax
mov esi, dword [esp + 0x88]
jmp 0x407c2f
mov eax, ebp
imul eax, eax
and eax, 3
cmp eax, 2
adc ebp, 0
mov dword [esp + 8], esi
mov eax, dword [esp + 0x90]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.007c51d0
mov byte [esp + esi + 0x98], 0
mov eax, dword [esp + 0x138]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.007c4280
test eax, eax
setne cl
mov edx, eax
and edx, 1
xor edx, eax
cmp edx, 0xffffffff
setne al
and al, cl
movzx eax, al
shl eax, 0x1f
sar eax, 0x1f
mov dword [esp + 0x84], eax
mov ecx, 3
sub ecx, ebp
xor ecx, ebp
setne cl
movzx ecx, cl
cmp ebp, ecx
jb 0x407bc0
jmp 0x407411
mov dword [esp + 0x5c], eax
mov edx, edi
mov dword [esp + 0x70], edi
jmp 0x406f55
mov dword [esp + 0x84], 0xffffffff
mov eax, dword [esp + 0x84]
jmp 0x406d3b
mov dword [esp + 0x84], 0xffffffff
mov eax, dword [esp + 0x84]
jmp 0x406d3b
mov dword [esp + 0x84], 0xffffffff
mov eax, dword [esp + 0x84]
jmp 0x406d3b
mov byte [esp + 0x4c], 0x67
mov byte [esp + 0x68], 0x60
mov dword [esp + 0x64], ecx
mov dword [esp + 0x74], ebp
mov dword [esp + 0x50], esi
jmp 0x407600
mov dword [esp + 0x84], 0xffffffff
mov eax, dword [esp + 0x84]
jmp 0x406d3b
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x64], ecx
mov ecx, ebp
mov eax, dword [esp + 0x60]
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x78]
jmp 0x4072f9