Function at 0x45c7a7
Capabilities:
Authenticate hmac
Encode data using base64
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x1ec
mov dword [ebp - 0xd4], edx
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x70], eax
mov ecx, dword [ebp + 8]
mov dword [ebp - 0xe0], 0
mov eax, dword [edx]
mov dword [ebp - 0xe4], 0
mov dword [ebp - 0x78], eax
mov eax, dword [ebp + 0x28]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ecx]
add eax, 6
mov dword [ebp - 0xd8], ecx
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0xdc], ecx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0xec], 0xfffffffe
mov dword [ebp - 0xe8], 0xfffffffe
mov dword [ebp - 0x84], eax
cmp byte [ecx], 0x5f
jne 0x45c840
movzx ebx, byte [ecx + 3]
movzx eax, byte [ecx + 4]
shl ebx, 8
mov esi, dword [ebp + 0x2c]
or ebx, eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0xe4], ebx
mov dword [ebp - 0x6c], eax
lea eax, [ebp - 0x6c]
mov word [ebp - 0x68], bx
mov dword [esi + 0x20], eax
mov edi, dword [ebp - 0xdc]
mov byte [edi + 1], 0
mov eax, dword [ebp - 0x74]
mov byte [eax + 2], 0
mov eax, dword [ebp + 0x1c]
add eax, dword [ebp - 0x74]
add eax, 3
mov dword [ebp - 0x74], eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax + 0x34]
mov dword [ebp - 0xf4], eax
mov dword [ebp - 0xf0], eax
cmp dword [ebp + 0x18], 0
je 0x45c881
mov edx, dword [ebp + 0x2c]
mov ecx, dword [ebp - 0xf0]
mov dword [edx + 0x34], ecx
mov eax, dword [ebp - 0x70]
and eax, 7
cmp eax, dword [ebp - 0xd4]
je 0x45c8b1
mov eax, dword [ebp - 0x74]
mov byte [eax], 0x19
mov edx, dword [ebp - 0x74]
lea eax, [edx + 1]
mov dword [ebp - 0x74], eax
mov al, byte [ebp - 0x70]
and eax, 7
mov byte [edx + 1], al
inc dword [ebp - 0x74]
add dword [ebp - 0x84], 2
cmp dword [ebp + 0x14], 0
je 0x45c8e2
mov eax, dword [ebp - 0x74]
mov byte [eax], 0x5c
mov edx, dword [ebp - 0x74]
lea eax, [edx + 1]
mov dword [ebp - 0x74], eax
mov dword [ebp - 0xe0], eax
mov byte [edx + 1], 0
mov eax, dword [ebp - 0x74]
mov byte [eax + 1], 0
add dword [ebp - 0x74], 2
add dword [ebp - 0x84], 3
lea ebx, [ebp - 0x84]
mov dword [ebp - 0xf8], ebx
cmp dword [ebp + 0x30], 0
jne 0x45c8fe
mov dword [ebp - 0xf8], 0
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x128], esi
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x128]
mov edi, dword [ebp - 0x74]
shr eax, 9
mov dword [ebp - 0xac], 0
and eax, 1
mov dword [ebp - 0xb0], 0
shr esi, 0xb
mov dword [ebp - 0x108], eax
and esi, 1
xor eax, 1
mov dword [ebp - 0x12c], 0
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0x130], edi
mov dword [ebp - 0x134], edi
mov dword [ebp - 0x138], edi
mov dword [ebp - 0x13c], 0
mov dword [ebp - 0x140], 0
mov dword [ebp - 0x144], 0
mov dword [ebp - 0x148], 0
mov dword [ebp - 0x14c], 0
mov dword [ebp - 0x154], esi
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0x118], 0xfffffffe
mov dword [ebp - 0x11c], 0xfffffffe
mov dword [ebp - 0x114], 0xfffffffe
mov dword [ebp - 0x110], 0xfffffffe
mov dword [ebp - 0x120], 0x100
test byte [ebp - 0x128], 1
jne 0x45cbb2
jmp 0x45cba8
mov edx, dword [ebp + 0x10]
mov dword [edx], 0x34
jmp 0x460593
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 0x14
jmp 0x460593
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0x34
jmp 0x460593
mov edi, dword [ebp + 0x10]
mov dword [edi], 0x1f
jmp 0x460593
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x1e
jmp 0x460593
mov edx, dword [ebp + 0x10]
mov dword [edx], 7
jmp 0x460593
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 8
jmp 0x460593
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 9
jmp 0x460593
mov esi, dword [ebp + 0x10]
mov dword [esi], 0x37
jmp 0x460593
mov edi, dword [ebp + 0x10]
mov dword [edi], 0x3b
jmp 0x460593
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x3c
jmp 0x460593
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x1e4]
mov dword [ebp - 0x8c], edx
mov dword [ecx], 0x1c
jmp 0x460593
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0x3a
jmp 0x460593
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x27
jmp 0x460593
mov edx, dword [ebp + 0x10]
mov dword [edx], 0x26
jmp 0x460593
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 0x29
jmp 0x460593
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0x2a
jmp 0x460593
mov esi, dword [ebp + 0x10]
mov dword [esi], 0x31
jmp 0x460593
mov edi, dword [ebp + 0x10]
mov dword [edi], 0x2b
jmp 0x460593
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x3e
jmp 0x460593
mov edx, dword [ebp + 0x10]
mov dword [edx], 0x2a
jmp 0x460593
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 0x30
jmp 0x460593
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0xf
jmp 0x460593
mov esi, dword [ebp + 0x10]
mov dword [esi], 0x1d
jmp 0x460593
mov edi, dword [ebp + 0x10]
mov dword [edi], 0x3a
jmp 0x460593
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x3a
jmp 0x460593
mov edx, dword [ebp + 0x10]
mov dword [edx], 0xf
jmp 0x460593
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 0x36
jmp 0x460593
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0x1b
jmp 0x460593
mov esi, dword [ebp + 0x10]
mov dword [esi], 0xe
jmp 0x460593
mov edi, dword [ebp + 0x10]
mov dword [edi], 0x14
jmp 0x460593
mov dword [ebp - 0x120], 0
mov eax, dword [ebp - 0x8c]
mov edx, dword [ebp + 0x2c]
cmp dword [ebp - 0xf8], 0
movzx esi, byte [eax]
mov eax, dword [edx + 0x10]
je 0x45cc82
add eax, 0x1000
cmp dword [ebp - 0x130], eax
ja 0x45c9ea
mov ecx, dword [ebp - 0x134]
cmp dword [ebp - 0x130], ecx
jae 0x45cbf3
mov dword [ebp - 0x130], ecx
mov ebx, dword [ebp - 0xf8]
mov edx, dword [ebp - 0x130]
mov eax, 0x7fffffeb
sub edx, dword [ebp - 0x134]
mov ecx, dword [ebx]
sub eax, ecx
cmp eax, edx
jl 0x45c9f8
lea eax, [ecx + edx]
mov dword [ebx], eax
cmp dword [ebp - 0x144], 0
je 0x45cc68
mov edi, dword [ebp - 0x138]
cmp dword [ebp - 0x144], edi
jbe 0x45cc74
mov eax, dword [ebp - 0x130]
sub eax, dword [ebp - 0x144]
push eax
push dword [ebp - 0x144]
push edi
call sub.msvcrt.dll_memmove
sub dword [ebp - 0x144], edi
add esp, 0xc
mov eax, dword [ebp - 0x144]
mov dword [ebp - 0x144], edi
sub dword [ebp - 0x130], eax
jmp 0x45cc74
mov edx, dword [ebp - 0x138]
mov dword [ebp - 0x130], edx
mov ecx, dword [ebp - 0x130]
mov dword [ebp - 0x134], ecx
jmp 0x45cc93
mov ebx, dword [ebp + 0x2c]
add eax, 0x1000
cmp dword [ebx + 0x24], eax
ja 0x45ca06
cmp dword [ebp - 0x13c], 0
setne dl
xor eax, eax
test esi, esi
setne al
test edx, eax
je 0x45cd36
cmp esi, 0x5c
jne 0x45cccd
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 1], 0x45
jne 0x45cccd
inc eax
mov dword [ebp - 0x13c], 0
jmp 0x4600d2
cmp dword [ebp - 0x148], 0
je 0x45ccfe
cmp dword [ebp - 0xf8], 0
jne 0x45ccf4
push dword [ebp + 0x2c]
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x148]
call fcn.0045c03a
pop edi
mov dword [ebp - 0x148], 0
test dword [ebp - 0x128], 0x4000
je 0x460410
push dword [ebp + 0x2c]
mov edi, dword [ebp - 0x130]
mov edx, dword [ebp - 0x8c]
mov eax, edi
mov dword [ebp - 0x148], edi
call fcn.0045c00d
pop ebx
mov dword [ebp - 0x130], eax
jmp 0x460410
lea eax, [esi - 0x2a]
xor edi, edi
cmp eax, 1
setbe dl
cmp esi, 0x3f
sete al
or eax, edx
test al, 1
jne 0x45cdad
cmp esi, 0x7b
jne 0x45cdb2
mov edx, dword [ebp - 0x8c]
movzx eax, byte [edx + 1]
lea ecx, [edx + 2]
test byte [eax + 0x52ed40], 4
je 0x45cdb2
movzx eax, byte [edx + 2]
test byte [eax + 0x52ed40], 4
je 0x45cd7b
inc ecx
movzx eax, byte [ecx]
jmp 0x45cd6c
mov al, byte [ecx]
cmp al, 0x7d
je 0x45cdad
inc ecx
cmp al, 0x2c
jne 0x45cdb2
mov al, byte [ecx]
cmp al, 0x7d
je 0x45cdad
movzx eax, al
inc ecx
test byte [eax + 0x52ed40], 4
je 0x45cdb2
movzx eax, byte [ecx]
test byte [eax + 0x52ed40], 4
je 0x45cda8
inc ecx
jmp 0x45cd99
cmp byte [ecx], 0x7d
jne 0x45cdb2
mov edi, 1
test edi, edi
sete dl
xor eax, eax
cmp dword [ebp - 0x148], 0
setne al
test edx, eax
je 0x45cdff
mov eax, dword [ebp - 0x12c]
dec dword [ebp - 0x12c]
test eax, eax
jg 0x45cdff
cmp dword [ebp - 0xf8], 0
jne 0x45cdf5
push dword [ebp + 0x2c]
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x148]
call fcn.0045c03a
pop ecx
mov dword [ebp - 0x148], 0
test byte [ebp - 0x128], 8
je 0x45ceaf
mov edx, dword [ebp + 0x2c]
mov eax, dword [edx + 0xc]
test byte [esi + eax], 1
jne 0x460588
cmp esi, 0x23
jne 0x45ceaf
mov edx, dword [ebp - 0x8c]
lea eax, [edx + 1]
mov dword [ebp - 0x8c], eax
cmp byte [edx + 1], 0
je 0x45cead
mov ecx, dword [ebp + 0x2c]
mov esi, dword [ebp + 0x2c]
mov ebx, dword [ecx + 0x58]
mov edx, dword [esi + 0x1c]
test ebx, ebx
mov ecx, dword [ebp - 0x8c]
je 0x45ce71
cmp ecx, edx
jae 0x45ce25
push dword [ebp - 0x154]
mov eax, esi
add eax, 0x5c
push eax
push edx
push ebx
push ecx
call fcn.0046b320
add esp, 0x14
test eax, eax
jne 0x45ce91
jmp 0x45ce25
mov eax, dword [ebp + 0x2c]
mov ebx, dword [eax + 0x5c]
sub edx, ebx
cmp ecx, edx
ja 0x45ce25
mov edx, eax
mov al, byte [eax + 0x60]
cmp byte [ecx], al
jne 0x45ce25
dec ebx
je 0x45ce91
mov al, byte [edx + 0x61]
cmp byte [ecx + 1], al
jne 0x45ce25
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ecx + 0x5c]
add eax, dword [ebp - 0x8c]
dec eax
mov dword [ebp - 0x8c], eax
cmp byte [eax], 0
jne 0x460588
xor esi, esi
xor eax, eax
mov edx, dword [ebp - 0x128]
shr edx, 0xe
test edi, edi
sete al
test eax, edx
je 0x45cee6
push dword [ebp + 0x2c]
mov ebx, dword [ebp - 0x130]
mov edx, dword [ebp - 0x8c]
mov eax, ebx
mov dword [ebp - 0x148], ebx
call fcn.0045c00d
pop edx
mov dword [ebp - 0x130], eax
cmp esi, 0x3f
je 0x45e24d
jg 0x45cf32
cmp esi, 0x29
je 0x45cf72
jg 0x45cf15
cmp esi, 0x24
je 0x45d00a
jg 0x45cf07
test esi, esi
jmp 0x45cf6c
cmp esi, 0x28
je 0x45ef25
jmp 0x460410
cmp esi, 0x2b
je 0x45e237
jl 0x45e22b
cmp esi, 0x2e
je 0x45d022
jmp 0x460410
cmp esi, 0x5d
je 0x45d07a
jg 0x45cf54
cmp esi, 0x5b
je 0x45d095
cmp esi, 0x5c
je 0x460077
jmp 0x460410
cmp esi, 0x7b
je 0x45e16b
jg 0x45cf69
cmp esi, 0x5e
je 0x45cfd6
jmp 0x460410
cmp esi, 0x7c
jne 0x460410
mov eax, dword [ebp - 0x130]
mov esi, dword [ebp - 0x110]
mov edi, dword [ebp - 0x114]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0x7c], esi
mov dword [ebp - 0x80], edi
mov dword [ebp - 0x78], eax
cmp dword [ebp - 0xf8], 0
je 0x4605a6
mov edx, dword [ebp - 0xf8]
mov eax, 0x7fffffeb
mov ecx, dword [edx]
mov edx, dword [ebp - 0x130]
sub edx, dword [ebp - 0x134]
sub eax, ecx
cmp eax, edx
jl 0x45ea6f
lea eax, [ecx + edx]
mov ecx, dword [ebp - 0xf8]
mov dword [ecx], eax
jmp 0x4605a6
test byte [ebp - 0x128], 2
je 0x45cff2
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x45cff2
mov dword [ebp - 0x110], 0xffffffff
mov ebx, dword [ebp - 0x130]
mov dword [ebp - 0x144], 0
mov byte [ebx], 0x1a
jmp 0x460396
mov esi, dword [ebp - 0x130]
mov dword [ebp - 0x144], 0
mov byte [esi], 0x1b
jmp 0x4603cc
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x45d035
mov dword [ebp - 0x110], 0xffffffff
mov eax, dword [ebp - 0x114]
mov edx, dword [ebp - 0x130]
mov dword [ebp - 0x118], eax
mov eax, dword [ebp - 0x128]
shr eax, 2
inc dword [ebp - 0x130]
and eax, 1
mov edi, dword [ebp - 0x110]
cmp eax, 1
mov dword [ebp - 0x11c], edi
sbb eax, eax
mov dword [ebp - 0x144], edx
add eax, 0xd
mov byte [edx], al
jmp 0x460588
mov ecx, dword [ebp + 0x2c]
test byte [ecx + 0x47], 2
je 0x460410
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0x40
jmp 0x460593
mov esi, dword [ebp - 0x130]
mov ebx, dword [ebp - 0x8c]
mov dword [ebp - 0x144], esi
mov cl, byte [ebx + 1]
cmp cl, 0x3a
sete dl
cmp cl, 0x2e
sete al
or eax, edx
test al, 1
jne 0x45d0c1
cmp cl, 0x3d
jne 0x45d0f3
lea edx, [ebp - 0x88]
mov eax, ebx
call fcn.0045be8d
test eax, eax
je 0x45d0f3
mov eax, dword [ebp - 0x8c]
mov edi, dword [ebp + 0x10]
cmp byte [eax + 1], 0x3a
setne al
movzx eax, al
dec eax
and eax, 0xffffffee
add eax, 0x1f
mov dword [edi], eax
jmp 0x460593
mov dword [ebp - 0x15c], 0
mov ebx, dword [ebp - 0x8c]
lea eax, [ebx + 1]
mov dword [ebp - 0x8c], eax
movzx esi, byte [ebx + 1]
cmp esi, 0x5c
jne 0x45d142
cmp byte [eax + 1], 0x45
jne 0x45d120
lea eax, [ebx + 2]
jmp 0x45d13a
lea eax, [ebx + 2]
push 3
push 0x52f9ec
push eax
call sub.msvcrt.dll_strncmp
add esp, 0xc
test eax, eax
jne 0x45d1b3
lea eax, [ebx + 4]
mov dword [ebp - 0x8c], eax
jmp 0x45d0fd
cmp dword [ebp - 0x15c], 0
sete dl
xor eax, eax
cmp esi, 0x5e
sete al
test edx, eax
je 0x45d164
mov dword [ebp - 0x15c], 1
jmp 0x45d0fd
cmp esi, 0x5d
jne 0x45d1b3
mov eax, dword [ebp + 0x2c]
test byte [eax + 0x47], 2
je 0x45d1b3
mov edx, dword [ebp - 0x130]
inc dword [ebp - 0x130]
cmp dword [ebp - 0x15c], 1
sbb eax, eax
and eax, 0x62
add eax, 0xd
mov byte [edx], al
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x45d1a2
mov dword [ebp - 0x110], 0xffffffff
mov edx, dword [ebp - 0x110]
mov dword [ebp - 0x11c], edx
jmp 0x460588
cld
xor eax, eax
lea edi, [ebp - 0x2c]
mov ecx, 8
mov dword [ebp - 0x160], 0
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x174], 0xffffffff
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x130]
mov dword [ebp - 0x150], 0
add edi, 4
test esi, esi
mov dword [ebp - 0x158], edi
je 0x45df51
cmp dword [ebp - 0x154], 0
setne dl
xor eax, eax
cmp esi, 0x7f
setg al
test edx, eax
je 0x45d27a
mov edx, dword [ebp - 0x8c]
mov dword [ebp - 0x188], edx
movzx esi, byte [edx]
cmp esi, 0xbf
jle 0x45d27a
mov eax, esi
mov ebx, 1
and eax, 0x3f
movzx edx, byte [eax + 0x530790]
imul ecx, edx, 6
and esi, dword [edx*4 + 0x5307d0]
mov dword [ebp - 0x1e8], ecx
shl esi, cl
cmp ebx, edx
jg 0x45d274
sub dword [ebp - 0x1e8], 6
mov ecx, dword [ebp - 0x188]
movzx eax, byte [ebx + ecx]
mov cl, byte [ebp - 0x1e8]
and eax, 0x3f
shl eax, cl
or esi, eax
inc ebx
jmp 0x45d24f
add dword [ebp - 0x8c], edx
cmp dword [ebp - 0xf8], 0
je 0x45d297
sub edi, dword [ebp - 0x158]
mov ebx, dword [ebp - 0xf8]
add dword [ebx], edi
mov edi, dword [ebp - 0x158]
cmp dword [ebp - 0x13c], 0
je 0x45d2d0
cmp esi, 0x5c
jne 0x45d9be
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 1], 0x45
jne 0x45d9be
inc eax
mov dword [ebp - 0x13c], 0
jmp 0x45d53c
mov edx, ebx
jmp 0x45d3de
cmp esi, 0x5b
jne 0x45d4bf
mov ebx, dword [ebp - 0x8c]
mov cl, byte [ebx + 1]
cmp cl, 0x3a
sete dl
cmp cl, 0x2e
sete al
or eax, edx
test al, 1
jne 0x45d2fd
cmp cl, 0x3d
jne 0x45d9be
lea edx, [ebp - 0x88]
mov eax, ebx
call fcn.0045be8d
test eax, eax
je 0x45d9be
mov esi, dword [ebp + 0x2c]
mov edx, dword [ebp - 0x8c]
mov dword [ebp - 0x18c], 0
mov esi, dword [esi + 8]
mov dword [ebp - 0x190], esi
cmp byte [edx + 1], 0x3a
jne 0x45ca14
lea eax, [edx + 2]
mov dword [ebp - 0x8c], eax
cmp byte [edx + 2], 0x5e
jne 0x45d364
lea eax, [edx + 3]
mov dword [ebp - 0x18c], 1
mov dword [ebp - 0x160], 1
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x88]
sub esi, eax
xor ebx, ebx
cmp byte [0x52ef68], 0
mov dword [ebp - 0x194], eax
mov dword [ebp - 0x198], str.alpha
je 0x45d3db
movzx edx, byte [ebx + 0x52ef68]
mov dword [ebp - 0x19c], edx
cmp esi, edx
jne 0x45d3bb
push esi
push dword [ebp - 0x198]
push dword [ebp - 0x194]
call sub.msvcrt.dll_strncmp
add esp, 0xc
test eax, eax
je 0x45d2c9
inc ebx
mov ecx, dword [ebp - 0x198]
mov eax, dword [ebp - 0x19c]
cmp byte [ebx + 0x52ef68], 0
lea ecx, [ecx + eax + 1]
mov dword [ebp - 0x198], ecx
jmp 0x45d38b
or edx, 0xffffffff
test edx, edx
js 0x45ca22
xor eax, eax
cmp edx, 2
setle al
xor ebx, ebx
test dword [ebp - 0x128], eax
sete bl
neg ebx
and ebx, edx
mov eax, dword [ebp - 0x190]
imul ebx, ebx, 3
lea edx, [ebp - 0x5c]
push 0x20
add eax, dword [ebx*4 + 0x52eec0]
push eax
push edx
call fcn.0047d340
mov eax, dword [ebx*4 + 0x52eec4]
add esp, 0xc
mov ecx, dword [ebx*4 + 0x52eec8]
test eax, eax
js 0x45d464
test ecx, ecx
js 0x45d44b
mov edx, dword [ebp - 0x190]
xor esi, esi
add edx, eax
mov al, byte [edx]
inc edx
or byte [esi + ebp - 0x5c], al
inc esi
cmp esi, 0x1f
jle 0x45d43c
jmp 0x45d464
mov edx, dword [ebp - 0x190]
xor esi, esi
add edx, eax
mov al, byte [edx]
inc edx
not eax
and byte [esi + ebp - 0x5c], al
inc esi
cmp esi, 0x1f
jle 0x45d455
mov eax, ecx
sar eax, 0x1f
xor ecx, eax
sub ecx, eax
cmp ecx, 1
jne 0x45d478
and byte [ebp - 0x5b], 0xc3
jmp 0x45d481
cmp ecx, 2
jne 0x45d481
and byte [ebp - 0x51], 0x7f
xor esi, esi
cmp dword [ebp - 0x18c], 0
je 0x45d49e
mov al, byte [esi + ebp - 0x5c]
not eax
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d48c
jmp 0x45d4ac
mov al, byte [esi + ebp - 0x5c]
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d49e
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x170], 0xa
inc eax
jmp 0x45d53c
cmp esi, 0x5c
jne 0x45d9be
push 1
mov ebx, dword [ebp + 0x2c]
push dword [ebp - 0x128]
push dword [ebx + 0x34]
mov edx, dword [ebp + 0x10]
lea eax, [ebp - 0x8c]
call fcn.0045afd0
add esp, 0xc
mov esi, eax
mov eax, dword [ebp + 0x10]
cmp dword [eax], 0
jne 0x460593
cmp esi, 0xfffffffb
jne 0x45d504
mov esi, 8
jmp 0x45d9be
cmp esi, 0xffffffea
jne 0x45d513
mov esi, 0x58
jmp 0x45d9be
cmp esi, 0xffffffef
jne 0x45d522
mov esi, 0x52
jmp 0x45d9be
cmp esi, 0xffffffe6
jne 0x45d556
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 1], 0x5c
jne 0x45d547
cmp byte [eax + 2], 0x45
jne 0x45d547
add eax, 2
mov dword [ebp - 0x8c], eax
jmp 0x45df1e
mov dword [ebp - 0x13c], 1
jmp 0x45df1e
cmp esi, 0xffffffe7
je 0x45df1e
test esi, esi
jns 0x45d9be
mov ecx, dword [ebp + 0x2c]
add dword [ebp - 0x170], 2
mov edx, dword [ecx + 8]
cmp dword [ebp - 0xf8], 0
jne 0x45d646
mov eax, esi
neg eax
sub eax, 6
cmp eax, 5
ja case.default.0x45d591
jmp dword [eax*4 + 0x52fc50]
xor esi, esi
mov al, byte [edx + esi + 0x40]
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d59a
jmp 0x45df1e
mov dword [ebp - 0x160], 1
xor esi, esi
mov al, byte [edx + esi + 0x40]
not eax
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d5b9
jmp 0x45df1e
xor esi, esi
mov al, byte [edx + esi + 0xa0]
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d5d0
jmp 0x45df1e
mov dword [ebp - 0x160], 1
xor esi, esi
mov al, byte [edx + esi + 0xa0]
not eax
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d5f2
jmp 0x45df1e
xor esi, esi
mov al, byte [esi + edx]
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d60c
and byte [ebp - 0x2b], 0xf7
jmp 0x45df1e
mov dword [ebp - 0x160], 1
xor esi, esi
mov al, byte [esi + edx]
not eax
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d62e
or byte [ebp - 0x2b], 8
jmp 0x45df1e
lea eax, [esi + 7]
cmp eax, 1
setbe dl
cmp esi, 0xfffffff5
sete al
or eax, edx
test al, 1
jne 0x45df1e
cmp esi, 0xfffffff6
sete dl
cmp esi, 0xfffffff7
sete al
or eax, edx
test al, 1
jne 0x45df1e
cmp esi, 0xfffffff8
je 0x45df1e
cmp esi, 0xffffffed
jne 0x45d727
or byte [ebp - 0x2b], 2
or byte [ebp - 0x28], 1
or byte [ebp - 0x18], 1
cmp dword [ebp - 0x154], 0
je 0x45df1e
mov dword [ebp - 0x150], 1
mov byte [edi], 1
inc edi
push edi
push 0x1680
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
mov byte [edi], 1
inc edi
push edi
push 0x180e
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 2
inc edi
push edi
push 0x2000
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
push edi
push 0x200a
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 1
inc edi
push edi
push 0x202f
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
mov byte [edi], 1
inc edi
push edi
push 0x205f
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 1
inc edi
push edi
push 0x3000
jmp 0x45deb0
cmp esi, 0xffffffee
jne 0x45d854
xor esi, esi
mov eax, 0xff
cmp esi, 4
je 0x45d753
jg 0x45d745
cmp esi, 1
je 0x45d74c
jmp 0x45d758
cmp esi, 0x14
je 0x45d753
jmp 0x45d758
mov eax, 0xfd
jmp 0x45d758
mov eax, 0xfe
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d732
cmp dword [ebp - 0x154], 0
je 0x45df1e
mov dword [ebp - 0x150], 1
mov byte [edi], 2
inc edi
push edi
push 0x100
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
push edi
push 0x167f
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 2
inc edi
push edi
push 0x1681
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
push edi
push 0x180d
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 2
inc edi
push edi
push 0x180f
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
push edi
push 0x1fff
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 2
inc edi
push edi
push 0x200b
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
push edi
push 0x202e
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 2
inc edi
push edi
push 0x2030
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
push edi
push 0x205e
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 2
inc edi
push edi
push 0x2060
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
push edi
push 0x2fff
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
mov byte [edi], 2
inc edi
push edi
push 0x3001
jmp 0x45d90b
cmp esi, 0xffffffeb
jne 0x45d896
or byte [ebp - 0x2b], 0x3c
or byte [ebp - 0x1c], 0x20
cmp dword [ebp - 0x154], 0
je 0x45df1e
mov dword [ebp - 0x150], 1
mov byte [edi], 2
inc edi
push edi
push 0x2028
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
push edi
push 0x2029
jmp 0x45deb0
cmp esi, 0xffffffec
jne 0x45d91f
xor esi, esi
mov eax, 0xff
cmp esi, 1
je 0x45d8b2
cmp esi, 0x10
je 0x45d8b9
jmp 0x45d8be
mov eax, 0xc3
jmp 0x45d8be
mov eax, 0xdf
or byte [esi + ebp - 0x2c], al
inc esi
cmp esi, 0x1f
jle 0x45d8a1
cmp dword [ebp - 0x154], 0
je 0x45df1e
mov dword [ebp - 0x150], 1
mov byte [edi], 2
inc edi
push edi
push 0x100
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
push edi
push 0x2027
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
mov byte [edi], 2
inc edi
push edi
push 0x2029
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
push edi
push 0x7fffffff
jmp 0x45deb0
lea eax, [esi + 0x10]
cmp eax, 1
ja 0x45d9a1
push dword [ebp + 0x10]
lea eax, [ebp - 0x90]
lea edx, [ebp - 0x94]
push eax
lea eax, [ebp - 0x8c]
call fcn.0045b409
pop ecx
test eax, eax
pop ebx
js 0x460593
mov dword [ebp - 0x1ec], edi
mov ebx, dword [ebp - 0x170]
inc edi
mov dword [ebp - 0x150], 1
cmp esi, 0xfffffff0
mov edx, dword [ebp - 0x94]
lea ecx, [edi + 1]
lea esi, [ebx - 2]
jne 0x45d977
dec edx
jmp 0x45d979
test edx, edx
je 0x45d97f
mov dl, 3
jmp 0x45d981
mov dl, 4
mov ebx, dword [ebp - 0x1ec]
mov byte [ebx], dl
mov byte [edi], al
mov edi, ecx
mov eax, dword [ebp - 0x90]
inc edi
mov byte [ecx], al
mov dword [ebp - 0x170], esi
jmp 0x45df1e
test byte [ebp - 0x128], 0x40
jne 0x45ca30
sub dword [ebp - 0x170], 2
mov eax, dword [ebp - 0x8c]
movzx esi, byte [eax]
mov edx, dword [ebp - 0x8c]
cmp byte [edx + 1], 0x5c
jne 0x45d9f1
cmp byte [edx + 2], 0x45
jne 0x45d9f1
lea eax, [edx + 2]
mov dword [ebp - 0x13c], 0
mov dword [ebp - 0x8c], eax
mov edx, eax
cmp byte [eax + 1], 0x5c
jne 0x45d9f1
cmp byte [eax + 2], 0x45
jmp 0x45d9ce
mov eax, dword [ebp - 0x8c]
cmp esi, 0xd
mov dword [ebp - 0x184], eax
sete dl
cmp esi, 0xa
sete al
or eax, edx
test al, 1
je 0x45da16
mov edx, dword [ebp + 0x2c]
or dword [edx + 0x48], 0x20
cmp dword [ebp - 0x13c], 0
jne 0x45de35
mov ecx, dword [ebp - 0x184]
cmp byte [ecx + 1], 0x2d
jne 0x45de35
mov eax, ecx
add eax, 2
mov dword [ebp - 0x8c], eax
cmp byte [ecx + 2], 0x5c
jne 0x45da62
cmp byte [eax + 1], 0x45
jne 0x45da62
add eax, 2
mov dword [ebp - 0x8c], eax
add eax, 2
cmp byte [eax - 2], 0x5c
jne 0x45da62
cmp byte [eax - 1], 0x45
je 0x45da4d
mov edx, dword [ebp - 0x8c]
cmp byte [edx], 0x5c
jne 0x45daab
cmp byte [edx + 1], 0x51
jne 0x45daab
lea ecx, [edx + 2]
mov dword [ebp - 0x8c], ecx
cmp byte [edx + 2], 0x5c
jne 0x45da88
cmp byte [ecx + 1], 0x45
je 0x45da94
mov dword [ebp - 0x13c], 1
jmp 0x45daab
lea eax, [edx + 4]
mov dword [ebp - 0x8c], eax
mov edx, eax
cmp byte [ecx + 2], 0x5c
jne 0x45daab
cmp byte [eax + 1], 0x51
jmp 0x45da71
mov ebx, dword [ebp - 0x8c]
mov dword [ebp - 0x1a0], ebx
mov al, byte [ebx]
test al, al
je 0x45daca
cmp dword [ebp - 0x13c], 0
jne 0x45dadb
cmp al, 0x5d
jne 0x45dadb
mov eax, dword [ebp - 0x184]
mov dword [ebp - 0x8c], eax
jmp 0x45de35
cmp dword [ebp - 0x154], 0
je 0x45db59
mov edx, dword [ebp - 0x1a0]
movzx ebx, byte [edx]
cmp ebx, 0xbf
jle 0x45db62
mov eax, ebx
mov dword [ebp - 0x1a4], 1
and eax, 0x3f
movzx edx, byte [eax + 0x530790]
imul ecx, edx, 6
and ebx, dword [edx*4 + 0x5307d0]
mov dword [ebp - 0x1e8], ecx
shl ebx, cl
cmp dword [ebp - 0x1a4], edx
jg 0x45db51
sub dword [ebp - 0x1e8], 6
mov eax, dword [ebp - 0x1a4]
mov ecx, dword [ebp - 0x1a0]
movzx eax, byte [eax + ecx]
mov cl, byte [ebp - 0x1e8]
and eax, 0x3f
inc dword [ebp - 0x1a4]
shl eax, cl
or ebx, eax
jmp 0x45db1d
add dword [ebp - 0x8c], edx
jmp 0x45db62
mov eax, dword [ebp - 0x1a0]
movzx ebx, byte [eax]
cmp dword [ebp - 0x13c], 0
sete dl
xor eax, eax
cmp ebx, 0x5c
sete al
test edx, eax
je 0x45dbde
push 1
mov edx, dword [ebp + 0x2c]
push dword [ebp - 0x128]
push dword [edx + 0x34]
lea eax, [ebp - 0x8c]
mov edx, dword [ebp + 0x10]
call fcn.0045afd0
mov ecx, dword [ebp + 0x10]
add esp, 0xc
mov ebx, eax
cmp dword [ecx], 0
jne 0x460593
test eax, eax
jns 0x45dbde
cmp eax, 0xfffffffb
jne 0x45dbb5
mov ebx, 8
jmp 0x45dbde
cmp eax, 0xffffffea
jne 0x45dbc1
mov ebx, 0x58
jmp 0x45dbde
cmp eax, 0xffffffef
jne 0x45dbcd
mov ebx, 0x52
jmp 0x45dbde
mov ebx, dword [ebp - 0x184]
mov dword [ebp - 0x8c], ebx
jmp 0x45de35
cmp ebx, esi
jl 0x45ca3e
je 0x45de35
cmp ebx, 0xd
sete dl
cmp ebx, 0xa
sete al
or eax, edx
test al, 1
je 0x45dc05
mov eax, dword [ebp + 0x2c]
or dword [eax + 0x48], 0x20
cmp dword [ebp - 0x154], 0
je 0x45dd8f
cmp ebx, 0xff
jg 0x45dc2e
xor eax, eax
cmp ebx, 0x7f
setg al
test dword [ebp - 0x128], eax
je 0x45dd8f
mov dword [ebp - 0x150], 1
test byte [ebp - 0x128], 1
je 0x45dd79
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x1a8], ebx
mov ecx, dword [ebp - 0x98]
cmp ecx, dword [ebp - 0x1a8]
ja 0x45dd79
mov eax, ecx
mov edx, ecx
shr eax, 7
and edx, 0x7f
movzx eax, byte [eax + 0x53a6b0]
shl eax, 7
add eax, edx
movzx eax, word [eax + eax + 0x5308b0]
mov edx, dword [eax*8 + 0x53c8b4]
lea eax, [ecx + edx]
cmp eax, ecx
jne 0x45dc92
inc ecx
jmp 0x45dc57
cmp ecx, dword [ebp - 0x1a8]
ja 0x45dd79
mov dword [ebp - 0x9c], eax
inc eax
mov dword [ebp - 0x1ac], eax
inc ecx
cmp ecx, dword [ebp - 0x1a8]
ja 0x45dcec
mov eax, ecx
mov edx, ecx
shr eax, 7
and edx, 0x7f
movzx eax, byte [eax + 0x53a6b0]
shl eax, 7
add eax, edx
movzx eax, word [eax + eax + 0x5308b0]
mov edx, dword [eax*8 + 0x53c8b4]
lea eax, [ecx + edx]
cmp eax, dword [ebp - 0x1ac]
jne 0x45dcec
inc dword [ebp - 0x1ac]
jmp 0x45dcab
mov eax, dword [ebp - 0x1ac]
mov dword [ebp - 0x98], ecx
dec eax
mov ecx, dword [ebp - 0x9c]
mov dword [ebp - 0xa0], eax
cmp ecx, esi
jb 0x45dd13
cmp eax, ebx
jbe 0x45dc51
jmp 0x45dd25
lea eax, [esi - 1]
cmp dword [ebp - 0xa0], eax
jb 0x45dd25
mov esi, ecx
jmp 0x45dc51
mov edx, dword [ebp - 0xa0]
cmp edx, ebx
jbe 0x45dd3d
lea eax, [ebx + 1]
cmp ecx, eax
ja 0x45dd3d
mov ebx, edx
jmp 0x45dc51
cmp dword [ebp - 0x9c], edx
lea ecx, [edi + 1]
jne 0x45dd4f
mov byte [edi], 1
mov edi, ecx
jmp 0x45dd64
mov byte [edi], 2
push ecx
push dword [ebp - 0x9c]
mov edi, ecx
call fcn.0046b2d0
pop ecx
add edi, eax
pop edx
push edi
push dword [ebp - 0xa0]
call fcn.0046b2d0
pop ecx
add edi, eax
pop edx
jmp 0x45dc51
mov byte [edi], 2
inc edi
push edi
push esi
call fcn.0046b2d0
pop esi
add edi, eax
pop edx
push edi
push ebx
jmp 0x45deb0
mov eax, ebx
mov ecx, dword [ebp - 0x170]
sub eax, esi
mov dword [ebp - 0x174], ebx
cmp dword [ebp - 0xf8], 0
lea ecx, [ecx + eax + 1]
mov dword [ebp - 0x170], ecx
jne 0x45df1e
cmp esi, ebx
jg 0x45df1e
mov eax, esi
mov ecx, 8
cdq
idiv ecx
mov dword [ebp - 0x1f0], eax
mov ecx, esi
and ecx, 7
mov eax, 1
mov edx, dword [ebp - 0x1f0]
mov dword [ebp - 0x1b0], 1
shl eax, cl
or byte [edx + ebp - 0x2c], al
test byte [ebp - 0x128], 1
je 0x45de32
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ecx + 4]
mov ecx, 8
movzx eax, byte [esi + eax]
mov dword [ebp - 0x1e8], eax
and dword [ebp - 0x1e8], 7
cdq
idiv ecx
mov cl, byte [ebp - 0x1e8]
mov dword [ebp - 0x1f0], eax
shl dword [ebp - 0x1b0], cl
mov dl, byte [ebp - 0x1b0]
or byte [eax + ebp - 0x2c], dl
inc esi
jmp 0x45ddb6
cmp dword [ebp - 0x154], 0
je 0x45debb
cmp esi, 0xff
jg 0x45de56
xor eax, eax
cmp esi, 0x7f
setg al
test dword [ebp - 0x128], eax
je 0x45debb
mov dword [ebp - 0x150], 1
mov byte [edi], 1
inc edi
push edi
push esi
call fcn.0046b2d0
pop edx
add edi, eax
pop ecx
test byte [ebp - 0x128], 1
je 0x45df1e
mov edx, pe_nt_image_headers32
mov eax, esi
mov ebx, edx
cdq
idiv ebx
movzx eax, byte [eax + 0x53a6b0]
shl eax, 7
add eax, edx
movzx eax, word [eax + eax + 0x5308b0]
mov edx, dword [eax*8 + 0x53c8b4]
lea eax, [esi + edx]
cmp eax, esi
je 0x45df1e
mov byte [edi], 1
inc edi
push edi
push eax
call fcn.0046b2d0
pop ecx
add edi, eax
pop ebx
jmp 0x45df1e
mov eax, esi
mov ebx, 8
cdq
mov ecx, esi
mov dword [ebp - 0x1b4], 1
idiv ebx
and ecx, 7
mov edx, 1
shl edx, cl
mov dword [ebp - 0x1f0], eax
or byte [eax + ebp - 0x2c], dl
test byte [ebp - 0x128], 1
je 0x45df12
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ecx + 4]
movzx esi, byte [esi + eax]
mov ecx, esi
mov eax, esi
and ecx, 7
shl dword [ebp - 0x1b4], cl
cdq
idiv ebx
mov dl, byte [ebp - 0x1b4]
or byte [eax + ebp - 0x2c], dl
inc dword [ebp - 0x170]
mov dword [ebp - 0x174], esi
mov edx, dword [ebp - 0x8c]
lea eax, [edx + 1]
mov dword [ebp - 0x8c], eax
movzx esi, byte [edx + 1]
test esi, esi
je 0x45df51
cmp esi, 0x5d
setne dl
cmp dword [ebp - 0x13c], 0
setne al
or eax, edx
test al, 1
jne 0x45d1ff
jmp 0x45df5f
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 6
jmp 0x460593
cmp dword [ebp - 0x170], 1
sete dl
xor eax, eax
cmp dword [ebp - 0x150], 0
sete al
test edx, eax
je 0x45e033
cmp dword [ebp - 0x154], 0
sete dl
cmp dword [ebp - 0x15c], 0
sete al
or eax, edx
test al, 1
jne 0x45dfa4
cmp dword [ebp - 0x174], 0x7f
jg 0x45e033
mov ebx, dword [ebp - 0x114]
mov dword [ebp - 0x118], ebx
cmp dword [ebp - 0x15c], 0
je 0x45dff6
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x45dfcc
mov dword [ebp - 0x110], 0xffffffff
mov edi, dword [ebp - 0x130]
mov esi, dword [ebp - 0x110]
mov dword [ebp - 0x11c], esi
mov byte [edi], 0x1e
inc edi
mov al, byte [ebp - 0x174]
mov byte [edi], al
inc edi
mov dword [ebp - 0x130], edi
jmp 0x460588
cmp dword [ebp - 0x154], 0
setne dl
xor eax, eax
cmp dword [ebp - 0x174], 0x7f
setg al
test edx, eax
je 0x45e022
lea eax, [ebp - 0xa8]
push eax
push dword [ebp - 0x174]
jmp 0x4603f6
mov dl, byte [ebp - 0x174]
mov byte [ebp - 0xa8], dl
jmp 0x460409
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x45e046
mov dword [ebp - 0x110], 0xffffffff
cmp dword [ebp - 0x150], 0
mov esi, dword [ebp - 0x130]
mov ebx, dword [ebp - 0x114]
setne dl
xor eax, eax
mov ecx, dword [ebp - 0x110]
cmp dword [ebp - 0x160], 0
sete al
mov dword [ebp - 0x118], ebx
mov dword [ebp - 0x11c], ecx
test edx, eax
lea ebx, [esi + 1]
je 0x45e10a
mov byte [edi], 0
add ebx, 2
mov byte [esi], 0x50
inc edi
cmp dword [ebp - 0x15c], 0
setne al
mov dword [ebp - 0x130], ebx
mov byte [ebx], al
cmp dword [ebp - 0x170], 0
jle 0x45e0d8
mov edx, ebx
or eax, 2
inc ebx
mov byte [edx], al
mov eax, edi
sub eax, ebx
add edi, 0x20
push eax
mov eax, ebx
add eax, 0x20
push ebx
push eax
call sub.msvcrt.dll_memmove
add esp, 0xc
lea eax, [ebp - 0x2c]
push 0x20
push eax
push ebx
call fcn.0047d340
add esp, 0xc
mov dword [ebp - 0x130], edi
mov edi, dword [ebp - 0x144]
mov eax, dword [ebp - 0x130]
sub eax, dword [ebp - 0x144]
sar eax, 8
mov byte [edi + 1], al
mov al, byte [ebp - 0x130]
sub al, byte [ebp - 0x144]
mov byte [edi + 2], al
jmp 0x460588
mov eax, dword [ebp - 0x160]
mov edx, dword [ebp - 0x130]
cmp dword [ebp - 0x15c], eax
mov dword [ebp - 0x130], ebx
setne al
add eax, 0x4e
mov byte [edx], al
cmp dword [ebp - 0x15c], 0
je 0x45e14f
cmp dword [ebp - 0xf8], 0
jne 0x45e163
xor esi, esi
mov al, byte [esi + ebp - 0x2c]
not eax
mov byte [esi + ebx], al
inc esi
cmp esi, 0x1f
jle 0x45e13e
jmp 0x45e163
lea eax, [ebp - 0x2c]
push 0x20
push eax
push dword [ebp - 0x130]
call fcn.0047d340
add esp, 0xc
add ebx, 0x20
jmp 0x460397
test edi, edi
je 0x460410
mov eax, dword [ebp - 0x8c]
xor esi, esi
or ebx, 0xffffffff
lea ecx, [eax + 1]
movzx eax, byte [eax + 1]
test byte [eax + 0x52ed40], 4
je 0x45e1b8
imul eax, esi, 0xa
movzx edx, byte [ecx]
inc ecx
lea esi, [eax + edx - 0x30]
movzx eax, byte [ecx]
test byte [eax + 0x52ed40], 4
jne 0x45e18e
cmp esi, 0xffff
jbe 0x45e1b8
mov edx, dword [ebp + 0x10]
mov dword [edx], 5
jmp 0x45e218
cmp byte [ecx], 0x7d
jne 0x45e1c1
mov ebx, esi
jmp 0x45e20c
inc ecx
mov al, byte [ecx]
cmp al, 0x7d
je 0x45e20c
movzx edx, al
xor ebx, ebx
test byte [edx + 0x52ed40], 4
je 0x45e1fd
imul eax, ebx, 0xa
inc ecx
lea ebx, [eax + edx - 0x30]
movzx edx, byte [ecx]
test byte [edx + 0x52ed40], 4
jne 0x45e1d6
cmp ebx, 0xffff
jbe 0x45e1fd
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 5
jmp 0x45e218
cmp ebx, esi
jge 0x45e20c
mov esi, dword [ebp + 0x10]
mov dword [esi], 4
jmp 0x45e218
mov dword [ebp - 0xac], esi
mov dword [ebp - 0xb0], ebx
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x8c], ecx
cmp dword [edi], 0
je 0x45e261
jmp 0x460593
mov dword [ebp - 0xac], 0
jmp 0x45e241
mov dword [ebp - 0xac], 1
mov dword [ebp - 0xb0], 0xffffffff
jmp 0x45e261
mov dword [ebp - 0xac], 0
mov dword [ebp - 0xb0], 1
cmp dword [ebp - 0x144], 0
je 0x45ca4c
mov ebx, dword [ebp - 0xac]
test ebx, ebx
jne 0x45e290
mov eax, dword [ebp - 0x11c]
mov edx, dword [ebp - 0x118]
mov dword [ebp - 0x110], eax
mov dword [ebp - 0x114], edx
xor eax, eax
mov edi, dword [ebp - 0xb0]
cmp ebx, edi
mov ecx, dword [ebp - 0x144]
sete al
dec eax
mov dword [ebp - 0x100], 0
and eax, 0x200
mov dword [ebp - 0x164], 0
mov dword [ebp - 0x124], eax
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0xc8], ecx
mov dl, byte [eax + 1]
cmp dl, 0x2b
jne 0x45e2ed
mov dword [ebp - 0xfc], 0
mov dword [ebp - 0x164], 1
jmp 0x45e30a
mov esi, dword [ebp - 0x108]
cmp dl, 0x3f
mov dword [ebp - 0xfc], esi
jne 0x45e311
mov edx, dword [ebp - 0x10c]
mov dword [ebp - 0xfc], edx
inc eax
mov dword [ebp - 0x8c], eax
mov ecx, dword [ebp - 0x144]
mov dl, byte [ecx]
lea eax, [edx - 0x1c]
cmp al, 1
ja 0x45e3d3
cmp dword [ebp - 0x154], 0
je 0x45e36b
mov esi, dword [ebp - 0x130]
mov al, byte [esi - 1]
test al, al
jns 0x45e36b
mov edx, esi
dec edx
and eax, 0xc0
add eax, 0xffffff80
jne 0x45e34d
dec edx
movzx eax, byte [edx]
jmp 0x45e33d
mov esi, dword [ebp - 0x130]
lea eax, [ebp - 0x3c]
sub esi, edx
push esi
push edx
push eax
call fcn.0047d340
or esi, 0x80
add esp, 0xc
jmp 0x45e38e
mov edi, dword [ebp - 0x130]
dec ebx
movzx esi, byte [edi - 1]
jle 0x45e38e
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp - 0x120]
or eax, esi
mov edx, dword [edx + 0x4c]
or eax, edx
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x164], 0
jne 0x45e483
cmp dword [ebp - 0xb0], 0
jns 0x45e483
mov ecx, dword [ebp - 0x144]
mov edx, dword [ebp - 0x8c]
inc edx
movzx eax, byte [ecx]
push dword [ebp + 0x2c]
push dword [ebp - 0x128]
push edx
lea edx, [ebp - 0x3c]
push edx
mov edx, esi
push dword [ebp - 0x154]
jmp 0x45e463
cmp dl, 0x1e
jne 0x45e423
mov ebx, dword [ebp - 0x144]
mov dword [ebp - 0x100], 0xd
cmp dword [ebp - 0x164], 0
movzx esi, byte [ebx + 1]
jne 0x45e483
test edi, edi
jns 0x45e483
push dword [ebp + 0x2c]
push dword [ebp - 0x128]
mov eax, dword [ebp - 0x8c]
mov edx, esi
inc eax
push eax
push 0
push dword [ebp - 0x154]
mov eax, 0x1e
jmp 0x45e463
cmp dl, 0x16
ja 0x45e7a2
mov dword [ebp - 0x100], 0x1a
movzx esi, dl
cmp dword [ebp - 0x164], 0
jne 0x45e483
test edi, edi
jns 0x45e483
push dword [ebp + 0x2c]
push dword [ebp - 0x128]
mov eax, dword [ebp - 0x8c]
xor edx, edx
inc eax
push eax
push 0
push dword [ebp - 0x154]
mov eax, esi
call fcn.0045c061
add esp, 0x14
test eax, eax
je 0x45e483
mov dword [ebp - 0xfc], 0
mov dword [ebp - 0x164], 1
mov edi, dword [ebp - 0x144]
mov al, byte [edi]
or edi, 0xffffffff
sub eax, 0xf
mov dword [ebp - 0x1b8], 0xffffffff
cmp al, 1
ja 0x45e4b3
mov eax, dword [ebp - 0x144]
movzx edx, byte [eax + 2]
movzx edi, byte [eax + 1]
mov dword [ebp - 0x1b8], edx
mov ebx, dword [ebp - 0x144]
mov eax, dword [ebp - 0xb0]
mov ecx, dword [ebp - 0x130]
test eax, eax
mov dword [ebp - 0x130], ebx
je 0x45ef0a
mov edx, dword [ebp - 0x100]
add dword [ebp - 0xfc], edx
mov edx, dword [ebp - 0xac]
test edx, edx
jne 0x45e546
cmp eax, 0xffffffff
jne 0x45e4f9
mov al, byte [ebp - 0xfc]
add eax, 0x1f
jmp 0x45e55d
mov ecx, dword [ebp - 0x130]
dec eax
lea ebx, [ecx + 1]
jne 0x45e515
mov al, byte [ebp - 0xfc]
add eax, 0x23
mov byte [ecx], al
jmp 0x45e735
mov al, byte [ebp - 0xfc]
mov edx, dword [ebp - 0x130]
add eax, 0x25
mov byte [edx], al
mov eax, dword [ebp - 0xb0]
mov ecx, dword [ebp - 0x144]
sar eax, 8
mov byte [ecx + 1], al
add ecx, 3
mov eax, dword [ebp - 0xb0]
mov byte [ebx + 1], al
jmp 0x45e597
dec edx
jne 0x45e5a2
cmp eax, 0xffffffff
jne 0x45e565
mov al, byte [ebp - 0xfc]
mov ebx, dword [ebp - 0x130]
add eax, 0x21
mov byte [ebx], al
inc ebx
jmp 0x45e735
mov dword [ebp - 0x130], ecx
dec eax
je 0x45ef0a
mov al, byte [ebp - 0xfc]
add eax, 0x25
mov byte [ecx], al
inc ecx
mov eax, dword [ebp - 0xb0]
dec eax
sar eax, 8
mov byte [ecx], al
mov al, byte [ebp - 0xb0]
dec eax
mov byte [ecx + 1], al
add ecx, 2
mov dword [ebp - 0x130], ecx
jmp 0x45e73b
mov al, byte [ebp - 0x100]
mov edx, dword [ebp - 0x130]
add eax, 0x27
mov byte [edx], al
mov eax, dword [ebp - 0xac]
mov ecx, dword [ebp - 0x144]
sar eax, 8
mov byte [ecx + 1], al
add ecx, 3
mov eax, dword [ebp - 0xac]
mov byte [edx + 2], al
mov dword [ebp - 0x130], ecx
mov eax, dword [ebp - 0xb0]
test eax, eax
jns 0x45e668
cmp dword [ebp - 0x154], 0
setne dl
xor eax, eax
cmp esi, 0x7f
setg al
test edx, eax
je 0x45e616
mov ebx, esi
lea eax, [ebp - 0x3c]
and ebx, 7
push ebx
push eax
push ecx
call fcn.0047d340
add dword [ebp - 0x130], ebx
add esp, 0xc
jmp 0x45e64b
mov eax, dword [ebp - 0x144]
mov ebx, esi
mov byte [eax + 3], bl
add eax, 4
mov dword [ebp - 0x130], eax
test edi, edi
js 0x45e64b
mov ecx, dword [ebp - 0x144]
mov edx, edi
mov byte [ecx + 4], dl
mov bl, byte [ebp - 0x1b8]
mov byte [ecx + 5], bl
add ecx, 6
mov dword [ebp - 0x130], ecx
mov edx, dword [ebp - 0x130]
mov al, byte [ebp - 0xfc]
add eax, 0x1f
mov byte [edx], al
inc edx
mov dword [ebp - 0x130], edx
jmp 0x45e73b
cmp eax, dword [ebp - 0xac]
je 0x45e73b
cmp dword [ebp - 0x154], 0
setne dl
xor eax, eax
cmp esi, 0x7f
setg al
test edx, eax
je 0x45e6aa
mov ebx, esi
lea eax, [ebp - 0x3c]
and ebx, 7
push ebx
push eax
push dword [ebp - 0x130]
call fcn.0047d340
add dword [ebp - 0x130], ebx
add esp, 0xc
jmp 0x45e6be
mov ebx, dword [ebp - 0x144]
mov ecx, esi
mov byte [ebx + 3], cl
add ebx, 4
mov dword [ebp - 0x130], ebx
test edi, edi
js 0x45e6dc
mov edx, dword [ebp - 0x130]
mov eax, edi
mov byte [edx], al
inc edx
mov cl, byte [ebp - 0x1b8]
mov byte [edx], cl
inc edx
mov dword [ebp - 0x130], edx
mov eax, dword [ebp - 0xb0]
sub eax, dword [ebp - 0xac]
mov dword [ebp - 0xb0], eax
dec eax
mov eax, dword [ebp - 0x130]
lea ebx, [eax + 1]
jne 0x45e70d
mov al, byte [ebp - 0xfc]
mov edx, dword [ebp - 0x130]
add eax, 0x23
mov byte [edx], al
jmp 0x45e735
mov al, byte [ebp - 0xfc]
mov ecx, dword [ebp - 0x130]
add eax, 0x25
mov byte [ecx], al
mov eax, dword [ebp - 0xb0]
sar eax, 8
mov byte [ebx], al
mov eax, dword [ebp - 0xb0]
mov byte [ebx + 1], al
add ebx, 2
mov dword [ebp - 0x130], ebx
cmp dword [ebp - 0x154], 0
setne dl
xor eax, eax
cmp esi, 0x7f
setg al
test edx, eax
je 0x45e771
mov ebx, esi
lea eax, [ebp - 0x3c]
and ebx, 7
push ebx
push eax
push dword [ebp - 0x130]
call fcn.0047d340
add dword [ebp - 0x130], ebx
add esp, 0xc
jmp 0x45e782
mov eax, dword [ebp - 0x130]
mov ebx, esi
mov byte [eax], bl
inc eax
mov dword [ebp - 0x130], eax
test edi, edi
js 0x45edbc
mov ecx, dword [ebp - 0x130]
mov edx, edi
mov byte [ecx], dl
inc ecx
mov bl, byte [ebp - 0x1b8]
mov byte [ecx], bl
jmp 0x45e829
lea eax, [edx - 0x4e]
cmp al, 3
ja 0x45e89f
test edi, edi
jne 0x45e7c2
mov esi, dword [ebp - 0x144]
mov dword [ebp - 0x130], esi
jmp 0x45ef0a
test ebx, ebx
jne 0x45e7e6
inc edi
jne 0x45e80f
mov edi, dword [ebp - 0x130]
mov al, byte [ebp - 0xfc]
add eax, 0x46
mov byte [edi], al
inc edi
mov dword [ebp - 0x130], edi
jmp 0x45edbc
cmp ebx, 1
jne 0x45e80b
inc edi
jne 0x45e835
mov edx, dword [ebp - 0x130]
mov al, byte [ebp - 0xfc]
add eax, 0x48
mov byte [edx], al
inc edx
mov dword [ebp - 0x130], edx
jmp 0x45edbc
test ebx, ebx
jne 0x45e835
cmp dword [ebp - 0xb0], 1
jne 0x45e835
mov al, byte [ebp - 0xfc]
mov ecx, dword [ebp - 0x130]
add eax, 0x4a
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x130], ecx
jmp 0x45edbc
mov ebx, dword [ebp - 0x130]
mov al, byte [ebp - 0xfc]
add eax, 0x4c
mov byte [ebx], al
inc ebx
mov eax, dword [ebp - 0xac]
sar eax, 8
mov byte [ebx], al
mov eax, dword [ebp - 0xac]
mov byte [ebx + 1], al
add ebx, 2
mov dword [ebp - 0x130], ebx
cmp dword [ebp - 0xb0], 0xffffffff
jne 0x45e877
mov dword [ebp - 0xb0], 0
mov esi, dword [ebp - 0x130]
mov eax, dword [ebp - 0xb0]
sar eax, 8
mov byte [esi], al
mov eax, dword [ebp - 0xb0]
mov byte [esi + 1], al
add esi, 2
mov dword [ebp - 0x130], esi
jmp 0x45edbc
lea eax, [edx - 0x5d]
cmp al, 3
ja 0x45eda5
mov eax, dword [ebp - 0x130]
mov dword [ebp - 0x1bc], 0
sub eax, dword [ebp - 0x144]
mov dword [ebp - 0x1c4], 0
mov dword [ebp - 0x1c0], eax
cmp dl, 0x60
jne 0x45e8e5
mov edx, dword [ebp - 0x144]
cmp byte [edx + 3], 0x68
je 0x45ca5a
cmp edi, 0xffffffff
jne 0x45e912
mov ecx, dword [ebp - 0x144]
movzx eax, byte [ecx + 1]
movzx edx, byte [ecx + 2]
shl eax, 8
or eax, edx
add ecx, eax
cmp byte [ecx], 0x55
jne 0x45e8f0
mov esi, dword [ebp - 0x130]
sub esi, ecx
mov dword [ebp - 0x1bc], esi
test ebx, ebx
jne 0x45ea22
dec edi
mov edi, dword [ebp - 0x144]
lea ebx, [edi + 1]
jg 0x45e990
mov eax, dword [ebp - 0x130]
mov edx, 1
mov byte [eax], 0
mov eax, edi
push dword [ebp - 0x14c]
push dword [ebp + 0x2c]
push dword [ebp - 0x154]
call fcn.0045becd
add esp, 0xc
push dword [ebp - 0x1c0]
push edi
push ebx
call sub.msvcrt.dll_memmove
add esp, 0xc
inc dword [ebp - 0x130]
cmp dword [ebp - 0xb0], 0
jne 0x45e974
mov byte [edi], 0x72
jmp 0x45ef0a
mov al, byte [ebp - 0xfc]
mov edx, dword [ebp - 0x144]
add eax, 0x69
mov byte [edx], al
mov dword [ebp - 0x144], ebx
jmp 0x45ea17
mov ecx, dword [ebp - 0x130]
mov edx, 4
mov byte [ecx], 0
push dword [ebp - 0x14c]
push dword [ebp + 0x2c]
push dword [ebp - 0x154]
mov eax, dword [ebp - 0x144]
call fcn.0045becd
add esp, 0xc
push dword [ebp - 0x1c0]
push dword [ebp - 0x144]
mov eax, dword [ebp - 0x144]
add eax, 4
push eax
call sub.msvcrt.dll_memmove
mov esi, dword [ebp - 0x144]
mov al, byte [ebp - 0xfc]
add eax, 0x69
add esp, 0xc
add dword [ebp - 0x130], 4
mov byte [esi], al
mov byte [ebx], 0x5e
inc ebx
mov dword [ebp - 0x144], ebx
mov dword [ebp - 0x1c4], ebx
mov byte [ebx], 0
mov edi, dword [ebp - 0x144]
mov byte [edi + 1], 0
add edi, 2
mov dword [ebp - 0x144], edi
dec dword [ebp - 0xb0]
jmp 0x45eb59
cmp ebx, 1
jle 0x45eb43
cmp dword [ebp - 0xf8], 0
je 0x45ea8d
lea eax, [ebx - 1]
mov edx, dword [ebp - 0xbc]
push eax
mov ecx, eax
fild dword [esp]
mov dword [esp], edx
fild dword [esp]
fmulp st(1)
add esp, 4
imul ecx, edx
fcomp qword [0x52fc48]
fnstsw ax
sahf
ja 0x45ea6f
mov ebx, dword [ebp - 0xf8]
mov eax, 0x7fffffeb
mov edx, dword [ebx]
sub eax, edx
cmp eax, ecx
jge 0x45ea7d
mov esi, dword [ebp + 0x10]
mov dword [esi], 0x14
jmp 0x460593
mov edi, dword [ebp - 0xf8]
lea eax, [edx + ecx]
mov dword [edi], eax
jmp 0x45eb43
mov eax, dword [ebp - 0x114]
cmp dword [ebp - 0x140], 0
setne dl
shr eax, 0x1f
test edx, eax
je 0x45eab0
mov eax, dword [ebp - 0x110]
mov dword [ebp - 0x114], eax
mov edi, 1
cmp edi, ebx
jge 0x45eb43
mov edx, dword [ebp + 0x2c]
mov esi, dword [edx + 0x24]
push dword [ebp - 0x1c0]
push dword [ebp - 0x144]
push dword [ebp - 0x130]
call fcn.0047d340
add esp, 0xc
mov ebx, dword [ebp - 0x14c]
cmp ebx, esi
jae 0x45eb25
mov eax, dword [ebp + 0x2c]
movzx edx, byte [ebx + 1]
mov ecx, dword [eax + 0x24]
movzx eax, byte [ebx]
shl eax, 8
or eax, edx
add eax, dword [ebp - 0x1c0]
sar eax, 8
mov byte [ecx], al
movzx eax, byte [ebx]
shl eax, 8
mov ecx, dword [ebp + 0x2c]
or al, byte [ebx + 1]
add ebx, 2
mov edx, dword [ecx + 0x24]
add eax, dword [ebp - 0x1c0]
mov byte [edx + 1], al
add dword [ecx + 0x24], 2
jmp 0x45eae3
mov ebx, dword [ebp - 0x1c0]
inc edi
add dword [ebp - 0x130], ebx
mov dword [ebp - 0x14c], esi
cmp edi, dword [ebp - 0xac]
jmp 0x45eab7
mov eax, dword [ebp - 0xb0]
test eax, eax
jle 0x45eb59
sub eax, dword [ebp - 0xac]
mov dword [ebp - 0xb0], eax
mov ecx, dword [ebp - 0xb0]
test ecx, ecx
js 0x45ed43
cmp dword [ebp - 0xf8], 0
je 0x45ebd0
test ecx, ecx
jle 0x45ebd0
mov edx, dword [ebp - 0xbc]
mov eax, ecx
add edx, 7
push ecx
imul eax, edx
fild dword [esp]
mov dword [esp], edx
lea ebx, [eax - 6]
fild dword [esp]
fmulp st(1)
add esp, 4
fcomp qword [0x52fc48]
fnstsw ax
sahf
ja 0x45ebb2
mov ecx, dword [ebp - 0xf8]
mov eax, 0x7fffffeb
mov edx, dword [ecx]
sub eax, edx
cmp eax, ebx
jge 0x45ebc0
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0x14
jmp 0x460593
mov esi, dword [ebp - 0xf8]
lea eax, [edx + ebx]
mov dword [esi], eax
jmp 0x45ecd4
mov edi, ecx
dec edi
js 0x45ecd4
mov eax, dword [ebp + 0x2c]
mov edx, dword [ebp - 0x130]
mov esi, dword [eax + 0x24]
mov al, byte [ebp - 0xfc]
add eax, 0x69
mov byte [edx], al
inc edx
mov dword [ebp - 0x130], edx
test edi, edi
je 0x45ec41
mov byte [edx], 0x5e
inc edx
mov dword [ebp - 0x130], edx
xor edx, edx
cmp dword [ebp - 0x1c4], 0
je 0x45ec1c
mov edx, dword [ebp - 0x130]
sub edx, dword [ebp - 0x1c4]
mov ecx, dword [ebp - 0x130]
mov eax, edx
sar eax, 8
mov dword [ebp - 0x1c4], ecx
mov byte [ecx], al
mov ebx, dword [ebp - 0x130]
mov byte [ebx + 1], dl
add ebx, 2
mov dword [ebp - 0x130], ebx
push dword [ebp - 0x1c0]
push dword [ebp - 0x144]
push dword [ebp - 0x130]
call fcn.0047d340
add esp, 0xc
mov ecx, dword [ebp - 0x14c]
cmp ecx, esi
jae 0x45ecbd
mov eax, dword [ebp + 0x2c]
movzx edx, byte [ecx + 1]
mov ebx, dword [eax + 0x24]
movzx eax, byte [ecx]
shl eax, 8
or eax, edx
add eax, dword [ebp - 0x1c0]
test edi, edi
je 0x45ec86
add eax, 4
jmp 0x45ec87
inc eax
shr eax, 8
mov byte [ebx], al
mov edx, dword [ebp + 0x2c]
movzx eax, byte [ecx]
shl eax, 8
mov ebx, dword [edx + 0x24]
movzx edx, byte [ecx + 1]
or eax, edx
add eax, dword [ebp - 0x1c0]
test edi, edi
je 0x45ecad
add eax, 4
jmp 0x45ecae
inc eax
mov byte [ebx + 1], al
add ecx, 2
mov ebx, dword [ebp + 0x2c]
add dword [ebx + 0x24], 2
jmp 0x45ec61
mov dword [ebp - 0x14c], esi
mov esi, dword [ebp - 0x1c0]
add dword [ebp - 0x130], esi
jmp 0x45ebd2
cmp dword [ebp - 0x1c4], 0
je 0x45edbc
mov eax, dword [ebp - 0x130]
mov ecx, dword [ebp - 0x130]
sub eax, dword [ebp - 0x1c4]
lea ebx, [eax + 1]
sub ecx, ebx
movzx eax, byte [ecx + 1]
movzx edx, byte [ecx + 2]
shl eax, 8
or eax, edx
je 0x45ed0f
sub dword [ebp - 0x1c4], eax
jmp 0x45ed19
mov dword [ebp - 0x1c4], 0
mov edi, dword [ebp - 0x130]
mov eax, ebx
sar eax, 8
mov byte [edi], 0x55
inc edi
mov byte [edi], al
mov byte [edi + 1], bl
add edi, 2
mov dword [ebp - 0x130], edi
mov byte [ecx + 1], al
mov byte [ecx + 2], bl
jmp 0x45ecd4
add byte [edi], 3
jmp 0x45edbc
mov esi, dword [ebp - 0x130]
sub esi, dword [ebp - 0x1bc]
mov edi, esi
movzx eax, byte [esi + 1]
movzx edx, byte [esi + 2]
shl eax, 8
or eax, edx
sub edi, eax
mov al, byte [ebp - 0xfc]
add eax, 0x56
mov byte [esi], al
cmp dword [ebp - 0xf8], 0
jne 0x45edbc
cmp byte [edi], 0x5d
je 0x45edbc
mov ebx, edi
push dword [ebp - 0x154]
mov edx, esi
mov eax, ebx
call fcn.0045bcf9
pop edx
test eax, eax
jne 0x45ed3e
movzx eax, byte [ebx + 1]
movzx edx, byte [ebx + 2]
shl eax, 8
or eax, edx
add ebx, eax
cmp byte [ebx], 0x54
je 0x45ed7b
jmp 0x45edbc
cmp dl, 0x6f
je 0x45ef0a
mov eax, dword [ebp + 0x10]
mov dword [eax], 0xb
jmp 0x460593
cmp dword [ebp - 0x164], 0
je 0x45ef0a
mov ebx, dword [ebp - 0xc8]
mov cl, byte [ebx]
cmp cl, 0x41
jne 0x45edf6
mov al, byte [ebx + 3]
sub eax, 0xf
cmp al, 1
mov al, byte [0x530871]
ja 0x45edee
movzx eax, al
lea eax, [ebx + eax + 2]
jmp 0x45ee38
movzx eax, al
lea eax, [ebx + eax]
jmp 0x45ee38
cmp cl, 0x27
sete dl
cmp cl, 0x34
sete al
or eax, edx
test al, 1
je 0x45ee3e
movzx eax, cl
cmp dword [ebp - 0x154], 0
movzx eax, byte [eax + 0x530830]
lea edx, [ebx + eax]
mov dword [ebp - 0xc8], edx
je 0x45ee3e
mov al, byte [edx - 1]
cmp al, 0xbf
jbe 0x45ee3e
and eax, 0x3f
movzx eax, byte [eax + 0x530790]
lea eax, [edx + eax]
mov dword [ebp - 0xc8], eax
mov edx, dword [ebp - 0xc8]
mov ebx, dword [ebp - 0x130]
sub ebx, edx
test ebx, ebx
jle 0x45ef0a
movzx eax, byte [edx]
sub eax, 0x1f
cmp eax, 0x20
ja case.0x45ee5f.32
jmp dword [eax*4 + 0x52fc68]
mov byte [edx], 0x28
jmp 0x45ef0a
mov byte [edx], 0x29
jmp 0x45ef0a
mov byte [edx], 0x2a
jmp 0x45ef0a
mov byte [edx], 0x2b
jmp 0x45ef0a
mov byte [edx], 0x42
jmp 0x45ef0a
mov byte [edx], 0x43
jmp 0x45ef0a
mov byte [edx], 0x44
jmp 0x45ef0a
mov byte [edx], 0x45
jmp 0x45ef0a
mov byte [edx], 0x35
jmp 0x45ef0a
mov byte [edx], 0x36
jmp 0x45ef0a
mov byte [edx], 0x37
jmp 0x45ef0a
mov byte [edx], 0x38
jmp 0x45ef0a
lea eax, [edx + 3]
push ebx
push edx
push eax
call sub.msvcrt.dll_memmove
mov eax, dword [ebp - 0xc8]
add dword [ebp - 0x130], 3
mov byte [eax], 0x5d
add ebx, 3
mov edx, dword [ebp - 0x130]
add esp, 0xc
mov byte [edx], 0x55
inc edx
mov dword [ebp - 0x130], edx
mov edx, ebx
sar edx, 8
mov ecx, dword [ebp - 0x130]
mov byte [ecx], dl
mov byte [ecx + 1], bl
mov eax, dword [ebp - 0xc8]
add ecx, 2
mov dword [ebp - 0x130], ecx
mov byte [eax + 1], dl
mov eax, dword [ebp - 0xc8]
mov byte [eax + 2], bl
mov ebx, dword [ebp + 0x2c]
mov esi, dword [ebp - 0x124]
mov dword [ebp - 0x144], 0
or dword [ebx + 0x4c], esi
jmp 0x460588
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebp + 0x2c]
mov edi, dword [ebp - 0x128]
mov dword [ebp - 0x17c], 0
mov eax, dword [eax + 0x24]
lea ecx, [edx + 1]
mov dword [ebp - 0x178], edi
mov dword [ebp - 0x104], 0x5f
mov dword [ebp - 0x14c], eax
mov dword [ebp - 0x16c], 0
mov dword [ebp - 0x8c], ecx
cmp byte [edx + 1], 0x2a
jne 0x45f07f
mov esi, dword [ebp + 0x2c]
movzx eax, byte [ecx + 1]
mov ebx, dword [esi + 0xc]
test byte [eax + ebx], 2
je 0x45f07f
lea esi, [edx + 2]
mov dword [ebp - 0x1cc], str.ACCEPT
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x144], 0
mov eax, dword [ebp - 0x8c]
lea ecx, [eax + 1]
mov dword [ebp - 0x8c], ecx
mov dl, byte [eax + 1]
movzx eax, dl
test byte [eax + ebx], 2
jne 0x45efa5
cmp dl, 0x3a
je 0x45ca68
cmp dl, 0x29
jne 0x45ca76
sub ecx, esi
xor edi, edi
mov dword [ebp - 0x1c8], ecx
mov ebx, dword [edi*8 + 0x52ee40]
cmp dword [ebp - 0x1c8], ebx
jne 0x45f041
push ebx
push dword [ebp - 0x1cc]
push esi
call sub.msvcrt.dll_strncmp
add esp, 0xc
test eax, eax
jne 0x45f041
mov ecx, dword [edi*8 + 0x52ee44]
cmp ecx, 0x70
jne 0x45f059
mov eax, dword [ebp + 0x2c]
mov dword [eax + 0x50], 1
mov edx, dword [eax + 0x20]
test edx, edx
je 0x45f059
mov ebx, dword [ebp - 0x130]
mov byte [ebx], 0x71
inc ebx
movzx ax, byte [edx + 5]
mov byte [ebx], al
mov ax, word [edx + 4]
mov byte [ebx + 1], al
add ebx, 2
mov edx, dword [edx]
mov dword [ebp - 0x130], ebx
jmp 0x45f018
mov eax, dword [ebp - 0x1cc]
inc edi
cmp edi, 6
lea ebx, [eax + ebx + 1]
mov dword [ebp - 0x1cc], ebx
jle 0x45efdc
jmp 0x45f071
mov edx, dword [ebp - 0x130]
mov byte [edx], cl
inc edx
mov dword [ebp - 0x130], edx
cmp edi, 6
jle 0x460588
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 0x3c
jmp 0x460593
cmp byte [ecx], 0x3f
jne 0x45fdea
lea edx, [ecx + 1]
mov dword [ebp - 0x8c], edx
movzx eax, byte [ecx + 1]
cmp eax, 0x39
jg 0x45f0fc
cmp eax, 0x30
jge 0x45fa01
cmp eax, 0x27
je 0x45f6c5
jg 0x45f0d5
cmp eax, 0x23
je 0x45f15a
jg 0x45f0c7
cmp eax, 0x21
je 0x45f531
jmp 0x45fc23
cmp eax, 0x26
je 0x45f8d4
jmp 0x45fc23
cmp eax, 0x2b
je 0x45fa01
jg 0x45f0ee
cmp eax, 0x28
je 0x45f1c4
jmp 0x45fc23
cmp eax, 0x2d
je 0x45fa01
jmp 0x45fc23
cmp eax, 0x43
je 0x45f5d4
jg 0x45f137
cmp eax, 0x3c
je 0x45f563
jg 0x45f120
cmp eax, 0x3a
je 0x45f1bc
jmp 0x45fc23
cmp eax, 0x3d
je 0x45f522
cmp eax, 0x3e
je 0x45f5bc
jmp 0x45fc23
cmp eax, 0x52
je 0x45f9f8
jg 0x45f150
cmp eax, 0x50
je 0x45f68c
jmp 0x45fc23
cmp eax, 0x7c
je 0x45f1b2
jmp 0x45fc23
lea eax, [ecx + 2]
mov dword [ebp - 0x8c], eax
mov al, byte [edx + 1]
test al, al
setne dl
cmp al, 0x29
setne al
movzx eax, al
test edx, eax
je 0x45f195
add ecx, 3
mov dword [ebp - 0x8c], ecx
inc ecx
mov al, byte [ecx - 1]
test al, al
setne dl
cmp al, 0x29
setne al
movzx eax, al
test edx, eax
jne 0x45f17a
mov eax, dword [ebp - 0x8c]
cmp byte [eax], 0
jne 0x460588
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0x12
jmp 0x460593
mov dword [ebp - 0x16c], 1
lea eax, [edx + 1]
jmp 0x45fddb
mov dword [ebp - 0x104], 0x60
cmp byte [edx + 1], 0x3f
jne 0x45f1f6
mov cl, byte [edx + 2]
cmp cl, 0x3d
sete dl
cmp cl, 0x21
sete al
or eax, edx
test al, 1
jne 0x45fe28
cmp cl, 0x3c
je 0x45fe28
mov esi, dword [ebp - 0x130]
mov byte [esi + 3], 0x64
mov dword [ebp - 0x17c], 3
mov ecx, dword [ebp - 0x8c]
or esi, 0xffffffff
cmp byte [ecx + 1], 0x52
jne 0x45f23e
cmp byte [ecx + 2], 0x26
jne 0x45f23e
mov edi, dword [ebp - 0x130]
lea eax, [ecx + 2]
mov dword [ebp - 0x180], 0xffffffff
mov dword [ebp - 0x8c], eax
mov byte [edi + 3], 0x66
jmp 0x45f291
mov al, byte [ecx + 1]
cmp al, 0x3c
jne 0x45f251
mov dword [ebp - 0x180], 0x3e
jmp 0x45f25f
cmp al, 0x27
jne 0x45f26a
mov dword [ebp - 0x180], 0x27
lea eax, [ecx + 1]
mov dword [ebp - 0x8c], eax
jmp 0x45f291
cmp al, 0x2d
mov dword [ebp - 0x180], 0
sete dl
cmp al, 0x2b
sete al
or eax, edx
test al, 1
je 0x45f291
lea eax, [ecx + 1]
mov dword [ebp - 0x8c], eax
movzx esi, byte [ecx + 1]
mov edx, dword [ebp - 0x8c]
mov ebx, dword [ebp + 0x2c]
movzx eax, byte [edx + 1]
mov ecx, dword [ebx + 0xc]
lea edi, [edx + 1]
test byte [eax + ecx], 0x10
mov dword [ebp - 0x1e4], edi
je 0x45ca84
xor edi, edi
mov eax, dword [ebp - 0x1e4]
mov dword [ebp - 0x8c], eax
mov ebx, eax
movzx eax, byte [edx + 1]
test byte [eax + ecx], 0x10
je 0x45f2f5
test edi, edi
js 0x45f2ea
movzx edx, byte [ebx]
test byte [edx + 0x52ed40], 4
je 0x45f2e7
imul eax, edi, 0xa
lea edi, [eax + edx - 0x30]
jmp 0x45f2ea
or edi, 0xffffffff
mov edx, dword [ebp - 0x8c]
lea eax, [edx + 1]
jmp 0x45f2bc
mov eax, dword [ebp - 0x8c]
mov edx, eax
sub edx, dword [ebp - 0x1e4]
cmp dword [ebp - 0x180], 0
mov dword [ebp - 0x1d0], edx
jle 0x45f324
movzx edx, byte [eax]
inc eax
cmp edx, dword [ebp - 0x180]
mov dword [ebp - 0x8c], eax
jne 0x45f338
mov edx, dword [ebp - 0x8c]
lea eax, [edx + 1]
mov dword [ebp - 0x8c], eax
cmp byte [edx], 0x29
je 0x45f34c
dec dword [ebp - 0x8c]
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 0x1a
jmp 0x460593
cmp dword [ebp - 0xf8], 0
jne 0x45fe28
test esi, esi
jle 0x45f397
test edi, edi
jle 0x45ca9e
mov ebx, dword [ebp + 0x2c]
cmp esi, 0x2d
mov eax, dword [ebx + 0x34]
jne 0x45f377
sub eax, edi
lea edi, [eax + 1]
jmp 0x45f379
add edi, eax
test edi, edi
jle 0x45f389
mov esi, dword [ebp + 0x2c]
cmp edi, dword [esi + 0x38]
jle 0x45f500
mov edi, dword [ebp + 0x10]
mov dword [edi], 0xf
jmp 0x460593
mov eax, dword [ebp + 0x2c]
mov esi, dword [ebp + 0x2c]
mov eax, dword [eax + 0x2c]
mov ebx, dword [esi + 0x28]
xor esi, esi
cmp dword [ebp - 0xf8], eax
mov dword [ebp - 0x1dc], eax
jge 0x45f3de
push dword [ebp - 0x1d0]
lea eax, [ebx + 2]
push eax
push dword [ebp - 0x1e4]
call sub.msvcrt.dll_strncmp
add esp, 0xc
test eax, eax
je 0x45f3de
mov edx, dword [ebp + 0x2c]
inc esi
add ebx, dword [edx + 0x30]
cmp esi, dword [ebp - 0x1dc]
jmp 0x45f3b1
mov ecx, dword [ebp + 0x2c]
cmp esi, dword [ecx + 0x2c]
jge 0x45f40d
movzx edi, byte [ebx]
movzx eax, byte [ebx + 1]
shl edi, 8
mov ebx, dword [ebp - 0x130]
or edi, eax
mov eax, edi
inc byte [ebx + 3]
sar eax, 8
mov byte [ebx + 4], al
mov eax, edi
mov byte [ebx + 5], al
jmp 0x45fe28
mov eax, dword [ebp - 0x128]
mov edx, dword [ebp - 0x1e4]
shr eax, 3
and eax, 1
push eax
mov eax, dword [ebp + 0x2c]
push dword [ebp - 0x1d0]
call fcn.0045b821
pop edx
mov esi, eax
pop ecx
test eax, eax
jle 0x45f446
mov edx, dword [ebp - 0x130]
mov ecx, esi
sar eax, 8
inc byte [edx + 3]
jmp 0x45f4ae
cmp dword [ebp - 0x180], 0
jne 0x45fabf
mov ebx, dword [ebp - 0x1e4]
cmp byte [ebx], 0x52
jne 0x45f4b9
mov esi, 1
xor edi, edi
cmp esi, dword [ebp - 0x1d0]
jge 0x45f498
mov eax, dword [ebp - 0x1e4]
movzx edx, byte [esi + eax]
test byte [edx + 0x52ed40], 4
je 0x45f389
imul eax, edi, 0xa
inc esi
lea edi, [eax + edx - 0x30]
cmp esi, dword [ebp - 0x1d0]
jl 0x45f46d
test edi, edi
jne 0x45f49d
mov edi, 0xffff
mov edx, dword [ebp - 0x130]
mov eax, edi
sar eax, 8
mov byte [edx + 3], 0x66
mov ecx, edi
mov byte [edx + 4], al
mov byte [edx + 5], cl
jmp 0x45fe28
cmp dword [ebp - 0x1d0], 6
jne 0x45f4f4
push 6
push str.DEFINE
push dword [ebp - 0x1e4]
call sub.msvcrt.dll_strncmp
add esp, 0xc
test eax, eax
jne 0x45f4f4
mov ebx, dword [ebp - 0x130]
mov byte [ebx + 3], 0x68
mov dword [ebp - 0x17c], 1
jmp 0x45fe28
test edi, edi
jle 0x45f50d
mov esi, dword [ebp + 0x2c]
cmp edi, dword [esi + 0x38]
jg 0x45f50d
mov eax, edi
mov edx, dword [ebp - 0x130]
sar eax, 8
jmp 0x45f4ac
cmp edi, 1
mov ebx, dword [ebp + 0x10]
sbb eax, eax
and eax, 0x14
add eax, 0xf
mov dword [ebx], eax
jmp 0x460593
lea eax, [ecx + 2]
mov dword [ebp - 0x104], 0x58
jmp 0x45f57e
lea eax, [ecx + 2]
mov dword [ebp - 0x104], 0x59
mov dword [ebp - 0x8c], eax
cmp byte [edx + 1], 0x29
jne 0x45fe36
mov esi, dword [ebp - 0x130]
mov byte [esi], 0x6f
inc esi
mov dword [ebp - 0x130], esi
jmp 0x45fdcb
movzx edx, byte [edx + 1]
cmp edx, 0x21
je 0x45f589
cmp edx, 0x3d
jne 0x45f595
mov dword [ebp - 0x104], 0x5a
lea eax, [ecx + 3]
mov dword [ebp - 0x8c], eax
jmp 0x45fe36
mov dword [ebp - 0x104], 0x5b
jmp 0x45f57b
mov edi, dword [ebp + 0x2c]
mov eax, dword [edi + 0xc]
test byte [edx + eax], 0x10
jne 0x45f6c5
lea eax, [ecx + 2]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x18
jmp 0x460593
mov dword [ebp - 0x104], 0x5d
lea eax, [ecx + 2]
mov dword [ebp - 0x8c], eax
jmp 0x45fe28
mov edx, dword [ebp - 0x130]
mov dword [ebp - 0x12c], 1
mov dword [ebp - 0x148], edx
xor ebx, ebx
mov byte [edx], 0x53
mov edx, dword [ebp - 0x8c]
inc dword [ebp - 0x130]
lea eax, [edx + 1]
mov dword [ebp - 0x8c], eax
movzx eax, byte [edx + 1]
test byte [eax + 0x52ed40], 4
je 0x45f633
lea ecx, [edx + 2]
imul eax, ebx, 0xa
movzx edx, byte [ecx - 1]
mov dword [ebp - 0x8c], ecx
inc ecx
lea ebx, [eax + edx - 0x30]
movzx eax, byte [ecx - 1]
test byte [eax + 0x52ed40], 4
jne 0x45f614
mov eax, dword [ebp - 0x8c]
cmp byte [eax], 0x29
jne 0x45caac
cmp ebx, 0xff
jg 0x45caba
mov ecx, dword [ebp - 0x130]
mov byte [ecx], bl
inc ecx
mov ebx, dword [ebp + 0x2c]
mov eax, dword [ebp - 0x8c]
sub eax, dword [ebx + 0x18]
inc eax
sar eax, 8
mov byte [ecx], al
mov eax, dword [ebp - 0x8c]
sub al, byte [ebx + 0x18]
mov byte [ecx + 2], 0
inc eax
mov byte [ecx + 3], 0
mov byte [ecx + 1], al
add ecx, 4
mov dword [ebp - 0x130], ecx
jmp 0x45fdcb
lea eax, [ecx + 2]
mov dword [ebp - 0x8c], eax
mov al, byte [edx + 1]
cmp al, 0x3d
je 0x45f6a0
cmp al, 0x3e
jne 0x45f6bd
cmp al, 0x3e
mov dword [ebp - 0x180], 0x29
sete al
movzx eax, al
mov dword [ebp - 0x168], eax
jmp 0x45f8e8
cmp al, 0x3c
jne 0x45cac8
mov edx, dword [ebp - 0x8c]
xor eax, eax
mov edi, dword [ebp + 0x2c]
cmp byte [edx], 0x3c
lea esi, [edx + 1]
sete al
dec eax
mov dword [ebp - 0x1d4], esi
and eax, 0xffffffe9
mov dword [ebp - 0x8c], esi
add eax, 0x3e
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0x180], eax
movzx eax, byte [edx + 1]
test byte [eax + ecx], 0x10
je 0x45f713
add edx, 2
mov dword [ebp - 0x8c], edx
inc edx
movzx eax, byte [edx - 1]
test byte [eax + ecx], 0x10
jne 0x45f702
mov eax, dword [ebp - 0x8c]
mov edx, eax
sub edx, dword [ebp - 0x1d4]
cmp dword [ebp - 0xf8], 0
mov dword [ebp - 0x1d0], edx
je 0x45f795
movzx eax, byte [eax]
cmp eax, dword [ebp - 0x180]
jne 0x45cad6
mov ecx, dword [ebp + 0x2c]
cmp dword [ecx + 0x2c], 0x270f
jg 0x45cae4
mov eax, edx
add eax, 3
cmp eax, dword [ecx + 0x30]
jle 0x45f8c3
mov dword [ecx + 0x30], eax
cmp edx, 0x20
jle 0x45f8c3
mov ebx, dword [ebp + 0x10]
mov dword [ebx], 0x30
jmp 0x460593
mov edi, dword [ebp + 0x2c]
mov eax, dword [edi + 0x2c]
sub eax, esi
imul eax, edx
push eax
lea eax, [ebx + edx]
push ebx
push eax
call sub.msvcrt.dll_memmove
add esp, 0xc
jmp 0x45f836
mov eax, dword [ebp + 0x2c]
xor esi, esi
mov dword [ebp - 0x1d8], 0
mov edx, dword [eax + 0x2c]
mov ebx, dword [eax + 0x28]
mov dword [ebp - 0x1f8], edx
cmp dword [ebp - 0xf8], edx
jge 0x45f83f
push dword [ebp - 0x1d0]
lea eax, [ebx + 2]
push eax
push dword [ebp - 0x1d4]
call sub.msvcrt.dll_memcmp
add esp, 0xc
mov ecx, eax
test eax, eax
jne 0x45f81d
mov edi, dword [ebp - 0x1d0]
cmp byte [ebx + edi + 2], 0
jne 0x45f81a
movzx eax, byte [ebx]
movzx edx, byte [ebx + 1]
shl eax, 8
or eax, edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [edx + 0x34]
inc edi
cmp eax, edi
je 0x45f80e
test dword [ebp - 0x128], 0x80000
je 0x45caf2
mov dword [ebp - 0x1d8], 1
jmp 0x45f81d
or ecx, 0xffffffff
mov eax, dword [ebp + 0x2c]
test ecx, ecx
mov edx, dword [eax + 0x30]
js 0x45f777
inc esi
add ebx, edx
cmp esi, dword [ebp - 0x1f8]
jl 0x45f7bc
cmp dword [ebp - 0x1d8], 0
jne 0x45f88d
mov edx, dword [ebp + 0x2c]
xor esi, esi
mov edi, dword [edx + 0x2c]
mov ecx, dword [edx + 0x28]
mov dword [ebp - 0x1f8], edi
cmp esi, edi
jge 0x45f88d
cmp ecx, ebx
je 0x45f87d
movzx eax, byte [ecx]
movzx edx, byte [ecx + 1]
shl eax, 8
or eax, edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [edx + 0x34]
inc edi
cmp eax, edi
jne 0x45f87e
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x41
jmp 0x460593
dec esi
mov edx, dword [ebp + 0x2c]
inc esi
add ecx, dword [edx + 0x30]
cmp esi, dword [ebp - 0x1f8]
jmp 0x45f852
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ecx + 0x34]
inc eax
sar eax, 8
mov byte [ebx], al
mov al, byte [ecx + 0x34]
inc eax
mov byte [ebx + 1], al
lea eax, [ebx + 2]
push dword [ebp - 0x1d0]
push dword [ebp - 0x1d4]
push eax
call fcn.0047d340
mov esi, dword [ebp - 0x1d0]
add esp, 0xc
mov byte [ebx + esi + 2], 0
mov edi, dword [ebp + 0x2c]
inc dword [ebp - 0x8c]
inc dword [edi + 0x2c]
jmp 0x45fe02
mov dword [ebp - 0x180], 0x29
mov dword [ebp - 0x168], 1
mov edx, dword [ebp - 0x8c]
mov ebx, dword [ebp + 0x2c]
lea edi, [edx + 1]
mov ecx, dword [ebx + 0xc]
mov dword [ebp - 0x8c], edi
movzx eax, byte [edx + 1]
test byte [eax + ecx], 0x10
je 0x45f91b
add edx, 2
mov dword [ebp - 0x8c], edx
inc edx
movzx eax, byte [edx - 1]
test byte [eax + ecx], 0x10
jne 0x45f90a
mov eax, dword [ebp - 0x8c]
mov esi, eax
sub esi, edi
mov dword [ebp - 0x1d0], esi
cmp dword [ebp - 0xf8], 0
je 0x45f95b
test esi, esi
je 0x45cb00
movzx eax, byte [eax]
cmp eax, dword [ebp - 0x180]
jne 0x45cb0e
cmp esi, 0x20
jg 0x45cb1c
xor edi, edi
jmp 0x45f9e6
mov eax, dword [ebp + 0x2c]
xor esi, esi
mov edx, dword [eax + 0x2c]
mov ebx, dword [eax + 0x28]
cmp dword [ebp - 0xf8], edx
mov dword [ebp - 0x1e0], edx
jge 0x45f9a7
push dword [ebp - 0x1d0]
lea eax, [ebx + 2]
push eax
push edi
call sub.msvcrt.dll_strncmp
add esp, 0xc
test eax, eax
jne 0x45f998
mov ecx, dword [ebp - 0x1d0]
cmp byte [ebx + ecx + 2], 0
je 0x45f9a7
mov eax, dword [ebp + 0x2c]
inc esi
add ebx, dword [eax + 0x30]
cmp esi, dword [ebp - 0x1e0]
jmp 0x45f972
mov edx, dword [ebp + 0x2c]
cmp esi, dword [edx + 0x2c]
jge 0x45f9bd
movzx edi, byte [ebx]
movzx eax, byte [ebx + 1]
shl edi, 8
or edi, eax
jmp 0x45f9e6
mov eax, dword [ebp - 0x128]
mov edx, edi
shr eax, 3
and eax, 1
push eax
mov eax, dword [ebp + 0x2c]
push dword [ebp - 0x1d0]
call fcn.0045b821
pop ebx
mov edi, eax
pop esi
test eax, eax
jle 0x45cb2a
cmp dword [ebp - 0x168], 0
je 0x4602ad
jmp 0x45fae0
lea eax, [ecx + 2]
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x180], 0x29
mov edx, dword [ebp - 0x8c]
movzx esi, byte [edx]
cmp esi, 0x2b
jne 0x45fa3d
lea eax, [edx + 1]
mov dword [ebp - 0x8c], eax
movzx eax, byte [edx + 1]
test byte [eax + 0x52ed40], 4
jne 0x45fa5c
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 0x3f
jmp 0x460593
cmp esi, 0x2d
jne 0x45fa5c
movzx eax, byte [edx + 1]
test byte [eax + 0x52ed40], 4
je 0x45fc23
lea eax, [edx + 1]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x8c]
xor edi, edi
movzx edx, byte [eax]
test byte [edx + 0x52ed40], 4
je 0x45fa8e
lea ecx, [eax + 1]
imul eax, edi, 0xa
mov dword [ebp - 0x8c], ecx
inc ecx
lea edi, [eax + edx - 0x30]
movzx edx, byte [ecx - 1]
test byte [edx + 0x52ed40], 4
jne 0x45fa73
mov eax, dword [ebp - 0x8c]
movzx eax, byte [eax]
cmp eax, dword [ebp - 0x180]
jne 0x45cb38
cmp esi, 0x2d
jne 0x45facd
test edi, edi
je 0x45cb46
mov ebx, dword [ebp + 0x2c]
mov eax, dword [ebx + 0x34]
sub eax, edi
lea edi, [eax + 1]
test edi, edi
jg 0x45fae0
mov esi, dword [ebp + 0x10]
mov dword [esi], 0xf
jmp 0x460593
cmp esi, 0x2b
jne 0x45fae0
test edi, edi
je 0x45cb54
mov eax, dword [ebp + 0x2c]
add edi, dword [eax + 0x34]
mov ecx, dword [ebp + 0x2c]
mov edx, dword [ebp - 0x130]
mov dword [ebp - 0x144], edx
mov esi, dword [ecx + 0x14]
cmp dword [ebp - 0xf8], 0
jne 0x45fbc3
mov byte [edx], 0
test edi, edi
je 0x45fb1a
push edi
push dword [ebp - 0x154]
push dword [ecx + 0x14]
call fcn.0045bbdf
add esp, 0xc
mov esi, eax
test esi, esi
jne 0x45fb76
mov eax, dword [ebp - 0x128]
xor edx, edx
shr eax, 3
and eax, 1
push eax
mov eax, dword [ebp + 0x2c]
push edi
call fcn.0045b821
pop edx
test eax, eax
pop ecx
js 0x45cb62
mov ebx, dword [ebp + 0x2c]
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 0x24]
lea esi, [eax + edi]
mov edi, dword [ebp - 0x130]
sub edi, eax
mov eax, edi
add eax, 4
sar eax, 8
mov byte [edx], al
mov al, byte [ebp - 0x130]
mov edx, dword [ebx + 0x24]
sub al, byte [ebx + 0x14]
add eax, 4
mov byte [edx + 1], al
add dword [ebx + 0x24], 2
jmp 0x45fbc3
movzx eax, byte [esi + 1]
movzx edx, byte [esi + 2]
shl eax, 8
or eax, edx
jne 0x45fbc3
lea ebx, [ebp - 0x64]
test ebx, ebx
je 0x45fbb5
cmp dword [ebp - 0x60], esi
jb 0x45fbb5
mov eax, dword [ebx + 4]
mov edx, dword [ebp - 0x130]
push dword [ebp - 0x154]
call fcn.0045bcf9
pop edi
test eax, eax
je 0x45fbc3
mov ebx, dword [ebx]
test ebx, ebx
je 0x45fbb5
cmp dword [ebx + 4], esi
jmp 0x45fb8f
mov edx, dword [ebp + 0x10]
mov dword [edx], 0x28
jmp 0x460593
mov ecx, dword [ebp - 0x130]
mov eax, esi
mov byte [ecx], 0x5d
mov byte [ecx + 1], 0
mov byte [ecx + 2], 6
add ecx, 3
mov byte [ecx], 0x52
mov ebx, dword [ebp + 0x2c]
sub eax, dword [ebx + 0x14]
sar eax, 8
mov byte [ecx + 1], al
mov eax, esi
sub al, byte [ebx + 0x14]
mov byte [ecx + 2], al
add ecx, 3
mov byte [ecx], 0x55
mov byte [ecx + 1], 0
mov byte [ecx + 2], 6
add ecx, 3
mov dword [ebp - 0x130], ecx
mov dword [ebp - 0xbc], 9
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x460588
jmp 0x460530
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xb4], 0
lea ebx, [ebp - 0xb4]
mov esi, dword [ebp - 0x8c]
mov cl, byte [esi]
cmp cl, 0x29
setne dl
xor eax, eax
cmp cl, 0x3a
setne al
test edx, eax
je 0x45fcf8
movzx edx, cl
lea eax, [esi + 1]
cmp edx, 0x69
mov dword [ebp - 0x8c], eax
je 0x45fcb4
jg 0x45fc88
cmp edx, 0x55
je 0x45fcd1
jg 0x45fc81
cmp edx, 0x2d
je 0x45fc9d
cmp edx, 0x4a
je 0x45fca5
jmp 0x45fce4
cmp edx, 0x58
je 0x45fcdc
jmp 0x45fce4
cmp edx, 0x73
je 0x45fcc1
jg 0x45fc96
cmp edx, 0x6d
je 0x45fcb9
jmp 0x45fce4
cmp edx, 0x78
je 0x45fcc9
jmp 0x45fce4
lea ebx, [ebp - 0xb8]
jmp 0x45fc3d
or dword [ebx], 0x80000
mov esi, dword [ebp + 0x2c]
or dword [esi + 0x48], 0x10
jmp 0x45fc3d
or dword [ebx], 1
jmp 0x45fc3d
or dword [ebx], 2
jmp 0x45fc3d
or dword [ebx], 4
jmp 0x45fc3d
or dword [ebx], 8
jmp 0x45fc3d
or dword [ebx], 0x200
jmp 0x45fc3d
or dword [ebx], 0x40
jmp 0x45fc3d
dec dword [ebp - 0x8c]
mov edi, dword [ebp + 0x10]
mov dword [edi], 0xc
jmp 0x460593
mov eax, dword [ebp - 0x128]
or eax, dword [ebp - 0xb4]
mov dword [ebp - 0x178], eax
mov eax, dword [ebp - 0xb8]
not eax
and dword [ebp - 0x178], eax
mov eax, dword [ebp - 0x8c]
cmp byte [eax], 0x29
jne 0x45fdda
mov edx, dword [ebp + 0x2c]
mov eax, dword [edx + 0x14]
add eax, 3
cmp dword [ebp - 0x130], eax
jne 0x45fd5a
cmp dword [ebp - 0xf8], 0
je 0x45fd4c
mov ecx, dword [ebp - 0xf8]
cmp dword [ecx], 6
jne 0x45fd5a
mov ebx, dword [ebp + 0x2c]
mov esi, dword [ebp - 0x178]
mov dword [ebx + 0x44], esi
jmp 0x45fdbc
and dword [ebp - 0x128], 7
mov eax, dword [ebp - 0x178]
and eax, 7
cmp dword [ebp - 0x128], eax
je 0x45fd85
mov edi, dword [ebp - 0x130]
mov byte [edi], 0x19
inc edi
mov byte [edi], al
inc edi
mov dword [ebp - 0x130], edi
mov eax, dword [ebp - 0x178]
shr eax, 9
and eax, 1
mov dword [ebp - 0x108], eax
xor eax, 1
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp - 0x178]
and eax, 1
cmp eax, 1
sbb edx, edx
not edx
and edx, 0x100
mov dword [ebp - 0x120], edx
mov ecx, dword [ebp - 0x178]
mov dword [ebp - 0x128], ecx
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x144], 0
jmp 0x460588
inc eax
mov dword [ebp - 0x104], 0x5e
jmp 0x45f5c9
test dword [ebp - 0x128], 0x1000
je 0x45fe02
mov dword [ebp - 0x104], 0x5e
jmp 0x45fe28
mov ebx, dword [ebp + 0x2c]
mov esi, dword [ebp - 0x130]
mov eax, dword [ebx + 0x34]
inc eax
mov dword [ebx + 0x34], eax
sar eax, 8
mov byte [esi + 3], al
mov eax, dword [ebx + 0x34]
mov byte [esi + 4], al
mov dword [ebp - 0x17c], 2
mov edi, dword [ebp - 0x130]
mov dword [ebp - 0x144], edi
jmp 0x45fe40
mov dword [ebp - 0x144], 0
mov edx, dword [ebp - 0x130]
mov al, byte [ebp - 0x104]
mov byte [edx], al
mov dword [ebp - 0xc8], edx
mov ecx, dword [ebp + 0x2c]
mov edx, dword [ebp - 0x128]
and edx, 7
lea eax, [ebp - 0xbc]
mov esi, dword [ecx + 0x4c]
mov dword [ebp - 0xbc], 0
cmp dword [ebp - 0xf8], 0
jne 0x45fe7e
xor eax, eax
push eax
lea ebx, [ebp - 0x64]
push dword [ebp + 0x2c]
lea eax, [ebp - 0xc0]
push ebx
push eax
lea eax, [ebp - 0xc4]
push eax
mov eax, dword [ebp - 0x104]
push dword [ebp - 0x17c]
sub eax, 0x5a
push dword [ebp - 0x16c]
cmp eax, 1
setbe al
movzx eax, al
push eax
lea eax, [ebp - 0x8c]
push dword [ebp + 0x10]
push eax
lea eax, [ebp - 0xc8]
push eax
mov eax, dword [ebp - 0x178]
call fcn.0045c7a7
add esp, 0x2c
test eax, eax
je 0x460593
cmp dword [ebp - 0x104], 0x60
sete dl
xor eax, eax
cmp dword [ebp - 0xf8], 0
sete al
test edx, eax
je 0x45ff50
mov ecx, dword [ebp - 0x130]
xor ebx, ebx
movzx eax, byte [ecx + 1]
movzx edx, byte [ecx + 2]
shl eax, 8
inc ebx
or eax, edx
add ecx, eax
cmp byte [ecx], 0x55
jne 0x45fefc
mov edi, dword [ebp - 0x130]
cmp byte [edi + 3], 0x68
jne 0x45ff30
dec ebx
jg 0x45cb70
mov dword [ebp - 0x104], 0x68
jmp 0x45ff50
cmp ebx, 2
jg 0x45cb7e
dec ebx
jne 0x45ff50
mov dword [ebp - 0xc0], 0xffffffff
mov dword [ebp - 0xc4], 0xffffffff
mov eax, dword [ebp - 0x8c]
cmp byte [eax], 0x29
jne 0x45cb8c
cmp dword [ebp - 0xf8], 0
je 0x45ffc1
mov eax, dword [ebp - 0xf8]
mov ecx, dword [ebp - 0xbc]
mov ebx, dword [eax]
mov eax, 0x7fffffeb
sub eax, ebx
lea edx, [ecx - 6]
cmp eax, edx
jl 0x45cb9a
mov edx, dword [ebp - 0xf8]
lea eax, [ebx + ecx - 6]
mov ecx, dword [ebp - 0x130]
mov dword [edx], eax
mov byte [ecx], 0x5e
inc ecx
mov byte [ecx], 0
mov byte [ecx + 1], 3
add ecx, 2
mov byte [ecx], 0x55
inc ecx
mov byte [ecx], 0
mov byte [ecx + 1], 3
add ecx, 2
mov dword [ebp - 0x130], ecx
jmp 0x460588
mov ebx, dword [ebp - 0xc8]
mov dword [ebp - 0x130], ebx
cmp dword [ebp - 0x104], 0x68
je 0x460588
mov edi, dword [ebp - 0x114]
mov eax, dword [ebp - 0x110]
mov dword [ebp - 0x118], edi
mov dword [ebp - 0x11c], eax
mov dword [ebp - 0x140], 0
cmp dword [ebp - 0x104], 0x5c
jle 0x460051
cmp eax, 0xfffffffe
mov eax, dword [ebp - 0xc4]
jne 0x46003a
mov dword [ebp - 0x110], 0xffffffff
test eax, eax
js 0x46002e
mov dword [ebp - 0x110], eax
mov dword [ebp - 0x140], 1
mov dword [ebp - 0x11c], 0xffffffff
jmp 0x46005e
test eax, eax
js 0x46005e
cmp dword [ebp - 0xc0], 0
jns 0x46005e
or eax, esi
mov dword [ebp - 0xc0], eax
jmp 0x46005e
cmp dword [ebp - 0x104], 0x58
jne 0x460588
mov eax, dword [ebp - 0xc0]
test eax, eax
js 0x460588
mov dword [ebp - 0x114], eax
jmp 0x460588
push 0
mov edx, dword [ebp + 0x2c]
push dword [ebp - 0x128]
push dword [edx + 0x34]
mov eax, dword [ebp - 0x8c]
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x88], eax
lea eax, [ebp - 0x8c]
call fcn.0045afd0
mov ecx, dword [ebp + 0x10]
add esp, 0xc
mov esi, eax
cmp dword [ecx], 0
jne 0x460593
test eax, eax
jns 0x4603d8
cmp eax, 0xffffffe6
jne 0x4600ec
mov eax, dword [ebp - 0x8c]
cmp byte [eax + 1], 0x5c
jne 0x4600dd
cmp byte [eax + 2], 0x45
jne 0x4600dd
add eax, 2
mov dword [ebp - 0x8c], eax
jmp 0x460588
mov dword [ebp - 0x13c], 1
jmp 0x460588
cmp eax, 0xffffffe7
je 0x460588
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x460114
neg eax
cmp eax, 5
jle 0x460114
cmp eax, 0x16
jg 0x460114
mov dword [ebp - 0x110], 0xffffffff
mov ebx, dword [ebp - 0x110]
mov edi, dword [ebp - 0x114]
mov dword [ebp - 0x11c], ebx
mov dword [ebp - 0x118], edi
cmp esi, 0xffffffe5
jne 0x46023a
mov ecx, dword [ebp - 0x8c]
mov eax, dword [ebp + 0x2c]
lea esi, [ecx + 1]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x14c], eax
mov dword [ebp - 0x8c], esi
xor eax, eax
cmp byte [ecx + 1], 0x3c
sete al
dec eax
mov dword [ebp - 0x17c], 0
and eax, 0xffffffe9
mov dword [ebp - 0x16c], 0
add eax, 0x3e
mov dword [ebp - 0x180], eax
mov bl, byte [esi + 1]
cmp bl, 0x2b
setne dl
xor eax, eax
cmp bl, 0x2d
setne al
test edx, eax
je 0x4601fd
add ecx, 2
mov edi, 1
test bl, bl
je 0x4601d0
movzx eax, bl
cmp eax, dword [ebp - 0x180]
je 0x4601d0
mov ebx, dword [ebp + 0x2c]
movzx edx, byte [ecx]
mov eax, dword [ebx + 0xc]
movzx edx, byte [edx + eax]
xor eax, eax
test dl, 4
setne al
neg eax
and edi, eax
and dl, 0x10
je 0x4601d0
inc ecx
mov al, byte [ecx]
test al, al
je 0x4601d0
movzx eax, al
jmp 0x46019e
movzx eax, byte [ecx]
cmp eax, dword [ebp - 0x180]
je 0x4601e9
mov esi, dword [ebp + 0x10]
mov dword [esi], 0x39
jmp 0x460588
mov dword [ebp - 0x168], 1
test edi, edi
je 0x45f8e8
jmp 0x46022c
movzx eax, byte [esi + 2]
add ecx, 3
test byte [eax + 0x52ed40], 4
je 0x460213
inc ecx
movzx eax, byte [ecx]
jmp 0x460204
movzx eax, byte [ecx]
cmp eax, dword [ebp - 0x180]
je 0x46022c
mov edi, dword [ebp + 0x10]
mov dword [edi], 0x39
jmp 0x460588
lea eax, [esi + 1]
mov dword [ebp - 0x8c], eax
jmp 0x45fa0b
cmp esi, 0xffffffe4
jne 0x4602a1
mov ebx, dword [ebp - 0x8c]
mov cl, byte [ebx + 1]
cmp cl, 0x3c
sete dl
cmp cl, 0x27
sete al
or eax, edx
test al, 1
jne 0x46025f
cmp cl, 0x7b
jne 0x4602a1
lea eax, [ebx + 1]
mov dword [ebp - 0x168], 0
mov dword [ebp - 0x8c], eax
mov al, byte [ebx + 1]
mov dword [ebp - 0x180], 0x3e
cmp al, 0x3c
je 0x45f8e8
cmp al, 0x27
setne al
movzx eax, al
dec eax
and eax, 0xffffffaa
add eax, 0x7d
mov dword [ebp - 0x180], eax
jmp 0x45f8e8
mov eax, esi
neg eax
cmp eax, 0x1c
jle 0x460322
lea edi, [eax - 0x1d]
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x4602c0
mov dword [ebp - 0x110], 0xffffffff
mov eax, dword [ebp - 0x130]
mov ecx, edi
mov dword [ebp - 0x144], eax
mov byte [eax], 0x51
mov eax, edi
sar eax, 8
inc dword [ebp - 0x130]
mov edx, dword [ebp - 0x130]
mov byte [edx], al
mov byte [edx + 1], cl
mov ebx, dword [ebp + 0x2c]
add edx, 2
mov dword [ebp - 0x130], edx
cmp edi, 0x1f
mov edx, dword [ebx + 0x40]
jg 0x460306
mov eax, 1
shl eax, cl
or eax, edx
jmp 0x46030b
mov eax, edx
or eax, 1
mov esi, dword [ebp + 0x2c]
mov dword [esi + 0x40], eax
cmp edi, dword [esi + 0x3c]
jle 0x460588
mov dword [esi + 0x3c], edi
jmp 0x460588
lea eax, [esi + 0x10]
cmp eax, 1
ja 0x4603a2
push dword [ebp + 0x10]
lea eax, [ebp - 0xcc]
lea edx, [ebp - 0xd0]
push eax
lea eax, [ebp - 0x8c]
call fcn.0045b409
pop ecx
test eax, eax
pop ebx
js 0x460593
mov edi, dword [ebp - 0x130]
inc dword [ebp - 0x130]
mov edx, dword [ebp - 0x130]
mov dword [ebp - 0x144], edi
mov ecx, edi
cmp esi, 0xfffffff0
lea ebx, [edx + 1]
mov edx, dword [ebp - 0xd0]
jne 0x46037a
dec edx
jmp 0x46037c
test edx, edx
je 0x460382
mov dl, 0x10
jmp 0x460384
mov dl, 0xf
mov byte [ecx], dl
mov ecx, dword [ebp - 0x130]
mov byte [ecx], al
mov eax, dword [ebp - 0xcc]
mov byte [ebx], al
inc ebx
mov dword [ebp - 0x130], ebx
jmp 0x460588
lea eax, [esi + 0x16]
mov ebx, dword [ebp - 0x130]
mov dword [ebp - 0x144], ebx
cmp eax, 0x10
jbe 0x4603c0
mov dword [ebp - 0x144], 0
mov eax, esi
mov esi, dword [ebp - 0x130]
neg eax
mov byte [esi], al
inc esi
mov dword [ebp - 0x130], esi
jmp 0x460588
cmp dword [ebp - 0x154], 0
setne dl
xor eax, eax
cmp esi, 0x7f
setg al
test edx, eax
je 0x460401
lea eax, [ebp - 0xa8]
push eax
push esi
call fcn.0046b2d0
pop edi
mov ecx, eax
pop edx
jmp 0x460460
mov eax, esi
mov byte [ebp - 0xa8], al
mov ecx, 1
jmp 0x460460
mov edx, esi
mov ecx, 1
cmp dword [ebp - 0x154], 0
mov byte [ebp - 0xa8], dl
setne dl
xor eax, eax
cmp esi, 0xbf
setg al
test edx, eax
je 0x460460
mov edx, dword [ebp - 0x8c]
movzx eax, byte [edx + 1]
and eax, 0xc0
add eax, 0xffffff80
jne 0x460460
lea eax, [edx + 1]
mov dword [ebp - 0x8c], eax
mov al, byte [edx + 1]
mov byte [ebp + ecx - 0xa8], al
inc ecx
jmp 0x460436
mov eax, dword [ebp - 0x128]
mov ebx, dword [ebp - 0x130]
and eax, 1
inc dword [ebp - 0x130]
cmp eax, 1
mov dword [ebp - 0x144], ebx
sbb eax, eax
xor esi, esi
add eax, 0x1d
mov byte [ebx], al
cmp esi, ecx
jge 0x4604a4
mov edi, dword [ebp - 0x130]
mov al, byte [ebp + esi - 0xa8]
inc esi
mov byte [edi], al
inc edi
mov dword [ebp - 0x130], edi
jmp 0x460487
mov bl, byte [ebp - 0xa8]
cmp bl, 0xd
sete dl
cmp bl, 0xa
sete al
or eax, edx
test al, 1
je 0x4604c3
mov eax, dword [ebp + 0x2c]
or dword [eax + 0x48], 0x20
cmp dword [ebp - 0x110], 0xfffffffe
jne 0x46053c
mov edx, dword [ebp - 0x114]
cmp ecx, 1
mov dword [ebp - 0x118], edx
mov dword [ebp - 0x11c], 0xffffffff
sete dl
cmp dword [ebp - 0x120], 0
sete al
or eax, edx
test al, 1
je 0x460526
movzx ebx, bl
mov esi, dword [ebp - 0x120]
or ebx, esi
dec ecx
mov dword [ebp - 0x110], ebx
je 0x460588
mov edi, dword [ebp - 0x130]
mov eax, dword [ebp + 0x2c]
movzx edi, byte [edi - 1]
mov eax, dword [eax + 0x4c]
or edi, eax
mov dword [ebp - 0x114], edi
jmp 0x460588
mov dword [ebp - 0x114], 0xffffffff
mov dword [ebp - 0x110], 0xffffffff
jmp 0x460588
mov edx, dword [ebp - 0x110]
dec ecx
mov dword [ebp - 0x11c], edx
mov ebx, dword [ebp - 0x114]
sete dl
cmp dword [ebp - 0x120], 0
sete al
or eax, edx
mov dword [ebp - 0x118], ebx
test al, 1
je 0x460588
mov esi, dword [ebp - 0x130]
mov eax, dword [ebp + 0x2c]
mov edi, dword [ebp - 0x120]
movzx esi, byte [esi - 1]
mov eax, dword [eax + 0x4c]
or esi, edi
or esi, eax
mov dword [ebp - 0x114], esi
inc dword [ebp - 0x8c]
jmp 0x45cbb2
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0x78], eax
mov dword [edx], eax
jmp 0x4607c4
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ecx + 0x34]
cmp eax, dword [ebp - 0xf4]
jle 0x4605ba
mov dword [ebp - 0xf4], eax
cmp dword [ebp + 0x30], 0
jne 0x4606ae
mov ebx, dword [ebp - 0xdc]
cmp byte [ebx], 0x54
je 0x4605e3
mov esi, dword [ebp - 0x7c]
mov edi, dword [ebp - 0x80]
mov dword [ebp - 0xe8], esi
mov dword [ebp - 0xec], edi
jmp 0x460647
cmp dword [ebp - 0xe8], 0
js 0x460610
mov eax, dword [ebp - 0xe8]
cmp eax, dword [ebp - 0x7c]
je 0x460620
cmp dword [ebp - 0xec], 0
jns 0x460606
mov dword [ebp - 0xec], eax
mov dword [ebp - 0xe8], 0xffffffff
mov eax, dword [ebp - 0x7c]
test eax, eax
js 0x460620
cmp dword [ebp - 0x80], 0
jns 0x460620
mov dword [ebp - 0x80], eax
mov ecx, dword [ebp - 0x80]
mov edx, dword [ebp - 0xec]
mov eax, ecx
and dh, 0xfd
and ah, 0xfd
cmp edx, eax
je 0x460641
mov dword [ebp - 0xec], 0xffffffff
jmp 0x460647
or dword [ebp - 0xec], ecx
cmp dword [ebp + 0x14], 0
je 0x4606ae
mov eax, dword [ebp - 0x74]
mov byte [eax], 0
push dword [ebp + 0x2c]
mov edx, dword [ebp - 0x70]
mov eax, dword [ebp - 0xdc]
push 0
call fcn.0045b905
pop ebx
mov edx, eax
pop esi
cmp eax, 0xfffffffd
jne 0x46067b
mov edx, dword [ebp + 0x2c]
mov dword [edx + 0x54], 1
jmp 0x4606ae
test eax, eax
jns 0x4606a0
xor eax, eax
cmp edx, 0xfffffffe
sete al
dec eax
mov ecx, dword [ebp + 0x10]
and eax, 0xfffffff5
mov ebx, dword [ebp + 0xc]
add eax, 0x24
mov dword [ecx], eax
mov eax, dword [ebp - 0x78]
mov dword [ebx], eax
jmp 0x4607c4
sar eax, 8
mov esi, dword [ebp - 0xe0]
mov byte [esi], al
mov byte [esi + 1], dl
mov eax, dword [ebp - 0x78]
cmp byte [eax], 0x7c
je 0x4607d7
cmp dword [ebp + 0x30], 0
jne 0x4606f5
mov ecx, dword [ebp - 0x74]
sub ecx, dword [ebp - 0xdc]
mov edi, dword [ebp - 0xdc]
movzx eax, byte [edi + 1]
movzx edx, byte [edi + 2]
shl eax, 8
mov byte [edi + 2], cl
or eax, edx
mov edx, ecx
sar edx, 8
mov ecx, eax
mov byte [edi + 1], dl
sub edi, eax
mov dword [ebp - 0xdc], edi
test eax, eax
jg 0x4606c9
cmp dword [ebp - 0xe4], 0
jle 0x460709
mov edx, dword [ebp + 0x2c]
mov eax, dword [edx + 0x20]
mov eax, dword [eax]
mov dword [edx + 0x20], eax
mov eax, dword [ebp - 0x74]
mov byte [eax], 0x55
mov edx, dword [ebp - 0x74]
mov eax, edx
sub eax, dword [ebp - 0xd8]
sar eax, 8
mov byte [edx + 1], al
mov edx, dword [ebp - 0x74]
mov al, dl
sub al, byte [ebp - 0xd8]
mov byte [edx + 2], al
mov edx, dword [ebp - 0x74]
lea eax, [edx + 3]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x70]
and eax, 7
cmp eax, dword [ebp - 0xd4]
je 0x46076d
mov eax, dword [ebp - 0x78]
cmp byte [eax], 0x29
jne 0x46076d
mov byte [edx + 3], 0x19
mov edx, dword [ebp - 0x74]
mov cl, byte [ebp - 0xd4]
lea eax, [edx + 1]
mov dword [ebp - 0x74], eax
mov byte [edx + 1], cl
inc dword [ebp - 0x74]
add dword [ebp - 0x84], 2
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0x74]
mov edx, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x2c]
mov dword [edi], eax
mov esi, dword [ebp - 0xf4]
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0xe8]
mov dword [edx], eax
mov eax, dword [ebp + 0x20]
mov dword [ebx + 0x34], esi
mov ebx, dword [ebp - 0xec]
mov dword [eax], ecx
mov eax, dword [ebp + 0x24]
cmp dword [ebp + 0x30], 0
mov dword [eax], ebx
je 0x4607d0
mov esi, dword [ebp + 0x30]
mov eax, 0x7fffffeb
mov edx, dword [ebp - 0x84]
mov ecx, dword [esi]
sub eax, ecx
cmp eax, edx
jge 0x4607c8
mov edi, dword [ebp + 0x10]
mov dword [edi], 0x14
xor eax, eax
jmp 0x460832
lea eax, [ecx + edx]
mov edx, dword [ebp + 0x30]
mov dword [edx], eax
mov eax, 1
jmp 0x460832
cmp dword [ebp + 0x30], 0
je 0x4607f1
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0x1c]
add dword [ebp - 0x84], 3
add eax, dword [ecx]
add eax, 3
jmp 0x460827
mov eax, dword [ebp - 0x74]
mov byte [eax], 0x54
mov edx, dword [ebp - 0x74]
mov eax, edx
sub eax, dword [ebp - 0xdc]
sar eax, 8
mov byte [edx + 1], al
mov edx, dword [ebp - 0x74]
mov al, dl
sub al, byte [ebp - 0xdc]
mov byte [edx + 2], al
mov ebx, dword [ebp - 0x74]
mov eax, ebx
mov dword [ebp - 0xdc], ebx
add eax, 3
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x74], eax
inc dword [ebp - 0x78]
jmp 0x45c86f
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret