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

Disassembly:
push ebp
lea ebp, [esp - 0x54]
sub esp, 0xbc
mov edx, dword [ebp + 0x5c]
mov edx, dword [edx]
xor eax, eax
mov ecx, dword [ebp + 0x7c]
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x34], eax
mov dword [ebp - 4], eax
mov dword [ebp + 0x10], eax
mov dword [ebp - 0x18], eax
mov dword [ebp + 0x4c], eax
mov dword [ebp + 4], eax
push ebx
push esi
mov esi, dword [ebp + 0x60]
mov ebx, dword [esi]
mov esi, dword [ebp + 0x64]
mov esi, dword [esi]
mov eax, edx
shr eax, 9
and eax, 1
mov dword [ebp - 0x40], eax
xor eax, 1
push edi
mov edi, dword [ebp + 0x78]
mov dword [ebp - 0x44], eax
push 0xfffffffffffffffe
pop eax
mov dword [ebp + 0x14], eax
mov dword [ebp + 0xc], eax
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x38], eax
mov eax, edx
and eax, 1
shl eax, 8
mov dword [ebp + 0x28], edx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp + 0x50], esi
mov dword [ebp - 0x10], eax
test ecx, ecx
movzx eax, byte [esi]
mov dword [ebp + 0x48], eax
je 0x45060d
mov edx, dword [edi + 0x10]
add edx, 0x1000
cmp ebx, edx
ja 0x45201a
cmp ebx, dword [ebp - 8]
jae 0x4505ce
mov ebx, dword [ebp - 8]
mov edx, ebx
sub edx, dword [ebp - 8]
add dword [ecx], edx
mov ecx, dword [ebp + 0x4c]
test ecx, ecx
je 0x450605
cmp ecx, dword [ebp - 0x1c]
jbe 0x450608
mov esi, dword [ebp - 0x1c]
mov eax, ebx
sub eax, ecx
push eax
push ecx
push esi
call fcn.00454d00
mov eax, esi
sub eax, dword [ebp + 0x4c]
add esp, 0xc
add ebx, eax
mov eax, dword [ebp + 0x48]
mov dword [ebp + 0x4c], esi
mov esi, dword [ebp + 0x50]
jmp 0x450608
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 8], ebx
jmp 0x45061f
mov ecx, dword [edi + 0x10]
add ecx, 0x1000
cmp dword [edi + 0x20], ecx
ja 0x45201a
cmp dword [ebp + 0x10], 0
je 0x45064a
test eax, eax
je 0x45064a
cmp eax, 0x5c
jne 0x45184a
lea ecx, [esi + 1]
cmp byte [ecx], 0x45
jne 0x45184a
and dword [ebp + 0x10], 0
mov dword [ebp + 0x50], ecx
jmp 0x45200c
cmp eax, 0x2a
je 0x450673
cmp eax, 0x2b
je 0x450673
cmp eax, 0x3f
je 0x450673
cmp eax, 0x7b
jne 0x45066d
lea eax, [esi + 1]
call fcn.0044fabf
test eax, eax
mov eax, dword [ebp + 0x48]
jne 0x450673
and dword [ebp + 0x2c], 0
jmp 0x45067a
mov dword [ebp + 0x2c], 1
test byte [ebp + 0x28], 8
je 0x4506e4
mov ecx, dword [edi + 0xc]
test byte [eax + ecx], 1
jne 0x45200c
mov eax, dword [ebp + 0x48]
cmp eax, 0x23
mov esi, dword [ebp + 0x50]
jne 0x4506e4
jmp 0x450752
cmp dword [edi + 0x48], 0
je 0x450730
mov eax, dword [edi + 0x1c]
cmp esi, eax
jae 0x450752
push 0
lea ecx, [edi + 0x4c]
push ecx
push eax
push esi
call fcn.00418945
mov esi, dword [ebp + 0x50]
add esp, 0x10
test eax, eax
je 0x450752
mov eax, dword [edi + 0x4c]
lea eax, [esi + eax - 1]
mov dword [ebp + 0x50], eax
cmp byte [eax], 0
jne 0x45200c
mov esi, eax
xor eax, eax
cmp eax, 0x2e
push 0x58
pop ecx
jg 0x450f08
je 0x450ee7
mov edx, eax
sub edx, 0
je 0x450f33
sub edx, 0x24
je 0x450edb
sub edx, 4
je 0x450768
dec edx
je 0x450f33
dec edx
je 0x450762
dec edx
jne 0x45184a
mov dword [ebp + 0x20], 1
or dword [ebp + 0x34], 0xffffffff
jmp 0x4518f7
mov ecx, dword [edi + 0x4c]
mov edx, dword [edi + 0x1c]
sub edx, ecx
cmp esi, edx
ja 0x450752
cmp al, byte [edi + 0x50]
jne 0x450752
cmp ecx, 1
je 0x4506cd
mov al, byte [esi + 1]
cmp al, byte [edi + 0x51]
je 0x4506cd
inc esi
mov dword [ebp + 0x50], esi
mov al, byte [esi]
test al, al
jne 0x45069d
jmp 0x4506e2
and dword [ebp + 0x20], 0
jmp 0x450727
and dword [ebp + 0x30], 0
mov eax, dword [ebp + 0x28]
mov edx, dword [edi + 0x20]
inc esi
mov dword [ebp + 0x50], esi
cmp byte [esi], 0x3f
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x44], 0x59
mov dword [ebp + 4], edx
jne 0x450e39
inc esi
mov dword [ebp + 0x50], esi
mov dl, byte [esi]
movzx eax, dl
cmp eax, 0x3a
jg 0x450a3b
je 0x450a2f
cmp eax, 0x21
je 0x450a22
cmp eax, 0x23
je 0x4509f3
cmp eax, 0x26
je 0x4509e4
cmp eax, 0x27
je 0x450c0f
cmp eax, 0x28
je 0x4507e4
cmp eax, 0x2f
jle 0x450a63
cmp eax, 0x39
jle 0x450b5c
jmp 0x450a63
cmp byte [esi + 1], 0x3f
mov dword [ebp + 0x44], 0x5a
jne 0x45080c
mov al, byte [esi + 2]
cmp al, 0x3d
je 0x450d4f
cmp al, 0x21
je 0x450d4f
cmp al, 0x3c
je 0x450d4f
mov byte [ebx + 3], 0x5e
mov edx, dword [ebp + 0x50]
lea eax, [edx + 1]
mov cl, byte [eax]
cmp cl, 0x52
mov dword [ebp + 0x30], 3
jne 0x450839
add edx, 2
cmp byte [edx], 0x26
jne 0x450839
or dword [ebp + 0x40], 0xffffffff
mov dword [ebp + 0x50], edx
mov byte [ebx + 3], 0x5f
jmp 0x45085c
cmp cl, 0x3c
jne 0x45084a
mov dword [ebp + 0x40], 0x3e
mov dword [ebp + 0x50], eax
jmp 0x45085c
cmp cl, 0x27
jne 0x450858
mov dword [ebp + 0x40], 0x27
jmp 0x450845
and dword [ebp + 0x40], 0
mov eax, dword [ebp + 0x50]
mov edx, dword [edi + 0xc]
inc eax
movzx ecx, byte [eax]
test byte [ecx + edx], 0x10
je 0x452028
mov ecx, eax
mov dword [ebp + 0x50], ecx
movzx eax, byte [ecx]
xor esi, esi
test byte [edx + eax], 0x10
mov dword [ebp + 0x48], esi
mov dword [ebp + 0x3c], ecx
je 0x4508af
test esi, esi
jl 0x45089f
test byte [eax + 0x45daf0], 4
je 0x45089c
lea esi, [esi + esi*4]
lea esi, [eax + esi*2 - 0x30]
jmp 0x45089f
or esi, 0xffffffff
inc ecx
mov dword [ebp + 0x50], ecx
movzx eax, byte [ecx]
test byte [edx + eax], 0x10
jne 0x450886
mov dword [ebp + 0x48], esi
mov eax, ecx
sub eax, dword [ebp + 0x3c]
cmp dword [ebp + 0x40], 0
mov dword [ebp + 0x24], eax
jle 0x4508cd
movzx eax, byte [ecx]
inc ecx
cmp eax, dword [ebp + 0x40]
mov dword [ebp + 0x50], ecx
jne 0x452039
mov al, byte [ecx]
inc ecx
cmp al, 0x29
mov dword [ebp + 0x50], ecx
jne 0x452039
cmp dword [ebp + 0x7c], 0
jne 0x450d4f
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x450916
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x3c]
call fcn.00455380
add esp, 0xc
test eax, eax
je 0x450916
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x4508f2
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jge 0x450934
movzx eax, byte [esi + 1]
mov ah, byte [esi]
mov ecx, eax
sar ecx, 8
mov byte [ebx + 4], cl
mov byte [ebx + 5], al
jmp 0x450d4f
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x50]
shr eax, 3
xor esi, esi
inc esi
and eax, esi
push eax
push dword [ebp + 0x24]
mov eax, dword [edi + 0x30]
push dword [ebp + 0x3c]
call fcn.0044fbb6
add esp, 0xc
test eax, eax
jg 0x450924
xor eax, eax
cmp dword [ebp + 0x40], eax
jne 0x4520b5
mov edx, dword [ebp + 0x3c]
cmp byte [edx], 0x52
jne 0x45099d
cmp dword [ebp + 0x24], esi
jle 0x450992
movzx ecx, byte [esi + edx]
test byte [ecx + 0x45daf0], 4
je 0x4520b5
inc esi
cmp esi, dword [ebp + 0x24]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
jl 0x450970
test eax, eax
jne 0x450997
mov eax, 0xffff
mov byte [ebx + 3], 0x5f
jmp 0x450924
cmp dword [ebp + 0x24], 6
jne 0x4509c5
push 6
push 0x45e4b8
push dword [ebp + 0x3c]
call fcn.00455380
add esp, 0xc
test eax, eax
jne 0x4509c5
mov byte [ebx + 3], 0x60
mov dword [ebp + 0x30], esi
jmp 0x450d4f
mov eax, dword [ebp + 0x48]
test eax, eax
jg 0x450924
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
mov ecx, dword [ebp + 0x68]
mov dword [ecx], eax
jmp 0x452155
push 0x29
pop ecx
mov dword [ebp + 0x30], 1
jmp 0x451069
inc esi
mov dword [ebp + 0x50], esi
mov al, byte [esi]
test al, al
je 0x450a14
cmp al, 0x29
je 0x450a0b
inc esi
mov dword [ebp + 0x50], esi
mov al, byte [esi]
test al, al
jne 0x4509fd
cmp byte [esi], 0
jne 0x45200c
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x12
jmp 0x452155
mov dword [ebp + 0x44], 0x53
inc esi
jmp 0x450d66
mov dword [ebp + 0x44], ecx
inc esi
mov dword [ebp + 0x50], esi
jmp 0x450d4f
sub eax, 0x3c
je 0x450bec
dec eax
je 0x450be0
dec eax
je 0x450bd4
sub eax, 0x12
je 0x450b9e
dec eax
dec eax
je 0x450b58
and dword [ebp + 0x44], 0
and dword [ebp + 0x40], 0
lea eax, [ebp + 0x40]
jmp 0x450adb
cmp dl, 0x3a
je 0x450ae0
movzx edx, dl
inc esi
cmp edx, 0x69
mov dword [ebp + 0x50], esi
jg 0x450ab9
je 0x450ab4
cmp edx, 0x2d
je 0x450aaf
cmp edx, 0x4a
je 0x450aa5
cmp edx, 0x55
je 0x450a9f
cmp edx, ecx
jne 0x45204b
or dword [eax], 0x40
jmp 0x450ad9
or byte [eax + 1], 2
jmp 0x450ad9
or byte [eax + 2], 8
or byte [edi + 0x3f], 8
jmp 0x450ad9
lea eax, [ebp + 0x44]
jmp 0x450ad9
or dword [eax], 1
jmp 0x450ad9
cmp edx, 0x6d
je 0x450ad6
cmp edx, 0x73
je 0x450ad1
cmp edx, 0x78
jne 0x45204b
or dword [eax], 8
jmp 0x450ad9
or dword [eax], 4
jmp 0x450ad9
or dword [eax], 2
mov dl, byte [esi]
cmp dl, 0x29
jne 0x450a70
mov eax, dword [ebp + 0x40]
or eax, dword [ebp + 0x28]
mov edx, dword [ebp + 0x44]
not edx
and eax, edx
cmp byte [esi], 0x29
mov dword [ebp + 0x2c], eax
jne 0x450a2f
mov ecx, dword [edi + 0x14]
add ecx, 3
cmp ebx, ecx
jne 0x450b17
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x450b0f
cmp dword [ecx], 6
jne 0x450b17
mov dword [edi + 0x3c], eax
mov dword [ebp + 0x28], eax
jmp 0x450b4f
mov ecx, eax
xor ecx, dword [ebp + 0x28]
test cl, 7
je 0x450b2d
mov byte [ebx], 0x13
mov cl, al
inc ebx
and cl, 7
mov byte [ebx], cl
inc ebx
mov ecx, dword [ebp + 0x5c]
mov dword [ecx], eax
mov ecx, eax
shr ecx, 9
and ecx, 1
mov dword [ebp + 0x28], eax
mov dword [ebp - 0x40], ecx
xor ecx, 1
and eax, 1
shl eax, 8
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x10], eax
and dword [ebp + 0x4c], 0
jmp 0x45200c
inc esi
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
xor ecx, ecx
test byte [eax + 0x45daf0], 4
mov dword [ebp + 0x48], ecx
je 0x450b87
inc esi
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
test byte [eax + 0x45daf0], 4
jne 0x450b6d
mov dword [ebp + 0x48], ecx
cmp byte [esi], 0x29
je 0x45112a
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1d
jmp 0x452155
inc esi
mov dword [ebp + 0x50], esi
mov dl, byte [esi]
cmp dl, 0x3d
je 0x450bc1
cmp dl, 0x3e
je 0x450bc1
cmp dl, 0x3c
je 0x450c0f
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x29
jmp 0x452155
xor eax, eax
cmp dl, 0x3e
sete al
push 0x29
pop ecx
mov dword [ebp + 0x30], eax
jmp 0x451069
mov dword [ebp + 0x44], 0x57
jmp 0x450a32
mov dword [ebp + 0x44], 0x52
jmp 0x450a29
mov al, byte [esi + 1]
cmp al, 0x21
je 0x450d5d
cmp al, 0x3d
je 0x450d54
mov ecx, dword [edi + 0xc]
movzx eax, al
test byte [eax + ecx], 0x10
je 0x45206b
mov ecx, dword [edi + 0xc]
xor eax, eax
cmp dl, 0x3c
setne al
dec eax
and eax, 0x17
add eax, 0x27
inc esi
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
movzx eax, byte [esi]
test byte [eax + ecx], 0x10
mov dword [ebp + 0x3c], esi
je 0x450c43
mov eax, ecx
inc esi
mov dword [ebp + 0x50], esi
movzx ecx, byte [esi]
test byte [ecx + eax], 0x10
jne 0x450c36
mov eax, esi
sub eax, dword [ebp + 0x3c]
cmp dword [ebp + 0x7c], 0
mov dword [ebp + 0x24], eax
je 0x450c90
movzx ecx, byte [esi]
cmp ecx, dword [ebp + 0x40]
jne 0x4520a7
cmp dword [edi + 0x28], 0x2710
jge 0x45205d
lea ecx, [eax + 3]
cmp ecx, dword [edi + 0x2c]
jle 0x450d2f
cmp eax, 0x20
mov dword [edi + 0x2c], ecx
jle 0x450d2f
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x30
jmp 0x452155
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x450d01
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x3c]
call fcn.004553c0
add esp, 0xc
test eax, eax
jne 0x450cd6
mov eax, dword [ebp + 0x24]
cmp byte [esi + eax + 2], 0
jne 0x450cd1
test byte [ebp + 0x2a], 8
jne 0x450cd8
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2b
jmp 0x452155
or eax, 0xffffffff
test eax, eax
jl 0x450ce8
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x450c9d
jmp 0x450d01
mov ecx, dword [edi + 0x28]
mov eax, dword [edi + 0x2c]
sub ecx, dword [ebp + 0x4c]
imul ecx, eax
push ecx
add eax, esi
push esi
push eax
call fcn.00454d00
add esp, 0xc
mov eax, dword [edi + 0x30]
push dword [ebp + 0x24]
inc eax
push dword [ebp + 0x3c]
sar eax, 8
mov byte [esi], al
mov al, byte [edi + 0x30]
inc al
mov byte [esi + 1], al
lea eax, [esi + 2]
push eax
call fcn.00454510
mov eax, dword [ebp + 0x24]
mov byte [esi + eax + 2], 0
mov esi, dword [ebp + 0x50]
add esp, 0xc
inc esi
inc dword [edi + 0x28]
mov dword [ebp + 0x50], esi
inc dword [edi + 0x30]
mov eax, dword [edi + 0x30]
sar eax, 8
mov byte [ebx + 3], al
mov al, byte [edi + 0x30]
mov byte [ebx + 4], al
mov dword [ebp + 0x30], 2
mov dword [ebp + 0x4c], ebx
jmp 0x450d6d
mov dword [ebp + 0x44], 0x54
jmp 0x450d64
mov dword [ebp + 0x44], 0x55
inc esi
inc esi
and dword [ebp + 0x4c], 0
mov dword [ebp + 0x50], esi
mov ecx, dword [ebp + 0x44]
mov byte [ebx], cl
mov eax, dword [edi + 0x40]
mov dword [ebp + 0x40], eax
xor eax, eax
cmp ecx, 0x54
mov dword [ebp + 0x1c], ebx
mov dword [ebp - 4], eax
je 0x450d8a
cmp ecx, 0x55
jne 0x450d8d
xor eax, eax
inc eax
mov ecx, dword [ebp + 0x7c]
neg ecx
sbb ecx, ecx
lea edx, [ebp - 4]
and ecx, edx
push ecx
push edi
push dword [ebp + 0x74]
lea ecx, [ebp]
push ecx
lea ecx, [ebp - 0x14]
push ecx
push dword [ebp + 0x30]
push eax
push dword [ebp + 0x68]
lea eax, [ebp + 0x50]
push eax
lea eax, [ebp + 0x1c]
push eax
mov eax, dword [ebp + 0x28]
and eax, 7
push eax
push dword [ebp + 0x2c]
call fcn.00452167
add esp, 0x30
test eax, eax
je 0x452155
mov edx, dword [ebp + 0x44]
cmp edx, 0x5a
jne 0x450dfd
mov eax, ebx
xor esi, esi
xor ecx, ecx
mov ch, byte [eax + 1]
inc esi
mov cl, byte [eax + 2]
add eax, ecx
cmp byte [eax], 0x4f
jne 0x450ddb
cmp byte [ebx + 3], 0x60
jne 0x450e4a
cmp esi, 1
jg 0x45207d
push 0x60
pop edx
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x50]
cmp byte [eax], 0x29
jne 0x452099
mov eax, dword [ebp + 0x7c]
xor esi, esi
cmp eax, esi
je 0x450e63
mov ecx, dword [ebp - 4]
add ecx, 0xfffffffa
add dword [eax], ecx
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
inc ebx
inc ebx
mov byte [ebx], 0x4f
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
mov ecx, dword [ebp - 0x14]
inc ebx
inc ebx
jmp 0x450e66
test ah, 0x10
je 0x450d36
mov dword [ebp + 0x44], ecx
jmp 0x450d4f
cmp esi, 2
jg 0x45208b
cmp esi, 1
jne 0x450dfd
or ecx, 0xffffffff
mov dword [ebp], ecx
mov dword [ebp - 0x14], ecx
jmp 0x450e00
mov ebx, dword [ebp + 0x1c]
cmp edx, 0x60
je 0x45200c
cmp edx, 0x57
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0x38]
mov dword [ebp + 0xc], eax
mov dword [ebp - 0x18], esi
jl 0x450ec5
cmp eax, 0xfffffffe
jne 0x450ea2
cmp ecx, esi
jl 0x450e98
mov dword [ebp + 0x38], ecx
mov dword [ebp - 0x18], 1
jmp 0x450e9c
or dword [ebp + 0x38], 0xffffffff
or dword [ebp + 0xc], 0xffffffff
jmp 0x450eb1
cmp ecx, esi
jl 0x450eb1
cmp dword [ebp], esi
jge 0x450eba
or ecx, dword [ebp + 0x40]
mov dword [ebp], ecx
cmp dword [ebp], esi
jl 0x45200c
mov eax, dword [ebp]
mov dword [ebp + 0x18], eax
jmp 0x45200c
cmp edx, 0x52
jne 0x45200c
mov eax, dword [ebp]
cmp eax, esi
jl 0x45200c
jmp 0x450ebd
and dword [ebp + 0x4c], 0
mov byte [ebx], 0x15
jmp 0x451841
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x450ef1
or dword [ebp + 0x38], 0xffffffff
mov eax, dword [ebp + 0x38]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0x14], eax
mov dword [ebp + 0x4c], ebx
mov byte [ebx], 0xb
jmp 0x451841
mov ecx, eax
sub ecx, 0x3f
je 0x4518ec
sub ecx, 0x1c
je 0x4512bc
dec ecx
je 0x450fb1
dec ecx
dec ecx
je 0x450f95
sub ecx, 0x1d
je 0x450f61
dec ecx
jne 0x45184a
mov eax, dword [ebp + 0x6c]
mov ecx, dword [ebp + 0x38]
mov dword [eax], ecx
mov eax, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x18]
mov dword [eax], ecx
mov eax, dword [ebp + 0x60]
mov dword [eax], ebx
mov eax, dword [ebp + 0x64]
mov dword [eax], esi
mov eax, dword [ebp + 0x7c]
test eax, eax
je 0x450f59
sub ebx, dword [ebp - 8]
add dword [eax], ebx
xor eax, eax
inc eax
jmp 0x45215f
cmp dword [ebp + 0x2c], 0
je 0x45184a
push dword [ebp + 0x68]
lea eax, [ebp + 0x34]
push eax
lea eax, [ebp + 0x20]
push eax
lea eax, [esi + 1]
call fcn.0044fb21
mov dword [ebp + 0x50], eax
mov eax, dword [ebp + 0x68]
add esp, 0xc
cmp dword [eax], 0
jne 0x452155
jmp 0x4518f7
test byte [ebp + 0x28], 2
je 0x450fa5
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x450fa5
or dword [ebp + 0x38], 0xffffffff
and dword [ebp + 0x4c], 0
mov byte [ebx], 0x14
jmp 0x451841
push 0
push dword [ebp + 0x28]
lea eax, [ebp + 0x50]
push dword [edi + 0x30]
mov dword [ebp - 0xc], esi
push dword [ebp + 0x68]
push eax
call fcn.0044f80f
mov ecx, dword [ebp + 0x68]
add esp, 0x14
cmp dword [ecx], 0
jne 0x452155
test eax, eax
jge 0x45184a
mov ecx, eax
neg ecx
cmp ecx, 0x14
jne 0x45100d
mov eax, dword [ebp + 0x50]
cmp byte [eax + 1], 0x5c
jne 0x451001
add eax, 2
cmp byte [eax], 0x45
jne 0x451001
mov dword [ebp + 0x50], eax
jmp 0x45200c
mov dword [ebp + 0x10], 1
jmp 0x45200c
cmp ecx, 0x13
je 0x45200c
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x45102a
cmp ecx, 4
jle 0x45102a
cmp ecx, 0x11
jge 0x45102a
or dword [ebp + 0x38], 0xffffffff
cmp ecx, 0x15
mov edx, dword [ebp + 0x38]
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0x18]
mov dword [ebp + 0x14], edx
jne 0x45123c
mov esi, dword [ebp + 0x50]
inc esi
mov dl, byte [esi]
cmp dl, 0x3c
je 0x451053
cmp dl, 0x27
jne 0x45123c
and dword [ebp + 0x30], 0
xor ecx, ecx
mov dword [ebp + 0x50], esi
cmp byte [esi], 0x3c
setne cl
dec ecx
and ecx, 0x17
add ecx, 0x27
mov edx, dword [edi + 0xc]
inc esi
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
test byte [eax + edx], 0x10
mov dword [ebp + 0x3c], esi
je 0x45108b
mov eax, edx
inc esi
mov dword [ebp + 0x50], esi
movzx edx, byte [esi]
test byte [edx + eax], 0x10
jne 0x45107e
mov eax, esi
sub eax, dword [ebp + 0x3c]
cmp dword [ebp + 0x7c], 0
mov dword [ebp + 0x24], eax
je 0x4510b3
movzx edx, byte [esi]
cmp edx, ecx
jne 0x4520a7
cmp eax, 0x20
jg 0x450c82
and dword [ebp + 0x48], 0
jmp 0x451120
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x4510e4
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x3c]
call fcn.00455380
add esp, 0xc
test eax, eax
je 0x4510e4
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x4510c0
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jge 0x4510f7
movzx eax, byte [esi + 1]
mov ah, byte [esi]
mov dword [ebp + 0x48], eax
jmp 0x451120
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x50]
shr eax, 3
and eax, 1
push eax
push dword [ebp + 0x24]
mov eax, dword [edi + 0x30]
push dword [ebp + 0x3c]
call fcn.0044fbb6
add esp, 0xc
test eax, eax
mov dword [ebp + 0x48], eax
jle 0x4520b5
cmp dword [ebp + 0x30], 0
je 0x451249
mov eax, dword [edi + 0x14]
xor edx, edx
cmp dword [ebp + 0x7c], edx
mov dword [ebp + 0x4c], ebx
mov dword [ebp + 0x40], eax
jne 0x4511aa
cmp dword [ebp + 0x48], edx
mov byte [ebx], dl
je 0x451150
push dword [ebp + 0x48]
mov eax, dword [edi + 0x14]
call fcn.0044feec
pop ecx
mov dword [ebp + 0x40], eax
cmp eax, edx
jne 0x4511f7
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x50]
shr eax, 3
and eax, 1
push eax
push dword [ebp + 0x48]
mov eax, dword [edi + 0x30]
push edx
call fcn.0044fbb6
add esp, 0xc
test eax, eax
jl 0x4520b5
mov eax, dword [edi + 0x14]
mov ecx, dword [ebp + 0x48]
add ecx, eax
mov dword [ebp + 0x40], ecx
mov ecx, ebx
sub ecx, eax
mov eax, dword [edi + 0x20]
add ecx, 4
sar ecx, 8
mov byte [eax], cl
mov ecx, dword [edi + 0x20]
mov al, bl
sub al, byte [edi + 0x14]
add al, 4
mov byte [ecx + 1], al
add dword [edi + 0x20], 2
mov eax, dword [ebp + 0x40]
mov byte [ebx], 0x57
mov byte [ebx + 1], 0
mov byte [ebx + 2], 6
add ebx, 3
mov byte [ebx], 0x4c
mov ecx, eax
sub ecx, dword [edi + 0x14]
add ebx, 3
sar ecx, 8
mov byte [ebx - 2], cl
sub al, byte [edi + 0x14]
mov byte [ebx - 1], al
mov byte [ebx], 0x4f
mov byte [ebx + 1], 0
mov byte [ebx + 2], 6
add ebx, 3
cmp dword [ebp + 0x38], 0xfffffffe
mov dword [ebp - 4], 9
jne 0x45200c
or dword [ebp + 0x38], 0xffffffff
jmp 0x45200c
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x4511aa
mov esi, dword [ebp + 0x74]
test esi, esi
je 0x4520c3
mov ecx, dword [esi + 4]
cmp ecx, eax
jb 0x4520c3
push 0
push ebx
push ecx
call fcn.0044ff2c
add esp, 0xc
test eax, eax
je 0x4511a7
mov esi, dword [esi]
test esi, esi
je 0x4520c3
mov eax, dword [ebp + 0x40]
jmp 0x45120e
cmp ecx, 0x16
jl 0x451287
push 0xffffffffffffffea
pop ecx
sub ecx, eax
mov dword [ebp + 0x48], ecx
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x451253
or dword [ebp + 0x38], 0xffffffff
mov ecx, dword [ebp + 0x48]
mov byte [ebx], 0x4b
mov dword [ebp + 0x4c], ebx
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
inc ebx
xor eax, eax
inc ebx
inc eax
cmp ecx, 0x20
jge 0x451273
shl eax, cl
or dword [edi + 0x38], eax
cmp ecx, dword [edi + 0x34]
jle 0x45200c
mov dword [edi + 0x34], ecx
jmp 0x45200c
cmp ecx, 0x10
je 0x4520d1
cmp ecx, 0xd
je 0x4520d1
cmp ecx, 0xe
je 0x4520d1
cmp ecx, 4
jle 0x4512b1
cmp ecx, 0x11
jge 0x4512b1
mov dword [ebp + 0x4c], ebx
jmp 0x4512b5
and dword [ebp + 0x4c], 0
neg al
jmp 0x45183f
mov al, byte [esi + 1]
cmp al, 0x3a
mov dword [ebp + 0x4c], ebx
je 0x4512ce
cmp al, 0x2e
je 0x4512ce
cmp al, 0x3d
jne 0x4512e4
lea eax, [ebp - 0xc]
push eax
mov ecx, edi
mov eax, esi
call fcn.0045006e
test eax, eax
pop ecx
jne 0x4520dc
inc dword [ebp + 0x50]
mov eax, dword [ebp + 0x50]
movzx esi, byte [eax]
cmp esi, 0x5e
jne 0x451304
inc dword [ebp + 0x50]
mov eax, dword [ebp + 0x50]
movzx esi, byte [eax]
mov dword [ebp + 0x40], 1
jmp 0x451308
and dword [ebp + 0x40], 0
and dword [ebp + 0x44], 0
or dword [ebp + 0x30], 0xffffffff
push 0x20
lea eax, [ebp - 0x3c]
push 0
push eax
call fcn.004549e0
add esp, 0xc
test esi, esi
je 0x452120
cmp dword [ebp + 0x10], 0
je 0x45134d
cmp esi, 0x5c
jne 0x45161f
mov eax, dword [ebp + 0x50]
inc eax
cmp byte [eax], 0x45
jne 0x45161f
and dword [ebp + 0x10], 0
jmp 0x4514e6
cmp esi, 0x5b
jne 0x45147f
mov eax, dword [ebp + 0x50]
mov al, byte [eax + 1]
cmp al, 0x3a
je 0x45136c
cmp al, 0x2e
je 0x45136c
cmp al, 0x3d
jne 0x45161f
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp + 0x50]
mov ecx, edi
call fcn.0045006e
test eax, eax
pop ecx
je 0x45161f
mov eax, dword [edi + 8]
and dword [ebp + 0x2c], 0
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0x50]
cmp byte [eax + 1], 0x3a
jne 0x4520f4
inc eax
inc eax
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5e
jne 0x4513af
inc eax
mov dword [ebp + 0x2c], 1
mov dword [ebp + 0x50], eax
mov ecx, dword [ebp - 0xc]
sub ecx, eax
push ecx
push eax
call fcn.004500a4
test eax, eax
pop ecx
pop ecx
jl 0x4520ff
test byte [ebp + 0x28], 1
je 0x4513d2
cmp eax, 2
jg 0x4513d2
xor eax, eax
lea eax, [eax + eax*2]
mov esi, eax
shl esi, 2
mov eax, dword [esi + 0x45da48]
add eax, dword [ebp + 0x14]
push 0x20
push eax
lea eax, [ebp - 0x68]
push eax
call fcn.00454510
mov eax, dword [esi + 0x45da4c]
mov edx, dword [esi + 0x45da50]
add esp, 0xc
test eax, eax
jl 0x45142b
mov esi, dword [ebp + 0x14]
xor ecx, ecx
add esi, eax
test edx, edx
jl 0x45141c
mov al, byte [esi + ecx]
or byte [ebp + ecx - 0x68], al
inc ecx
cmp ecx, 0x20
jl 0x45140d
jmp 0x45142b
mov al, byte [esi + ecx]
not al
and byte [ebp + ecx - 0x68], al
inc ecx
cmp ecx, 0x20
jl 0x45141c
xor eax, eax
cmp edx, eax
jge 0x451433
neg edx
cmp edx, 1
jne 0x45143e
and byte [ebp - 0x67], 0xc3
jmp 0x451447
cmp edx, 2
jne 0x451447
and byte [ebp - 0x5d], 0x7f
cmp dword [ebp + 0x2c], eax
je 0x45145e
mov cl, byte [ebp + eax - 0x68]
not cl
or byte [ebp + eax - 0x3c], cl
inc eax
cmp eax, 0x20
jl 0x45144c
jmp 0x45146c
mov cl, byte [ebp + eax - 0x68]
or byte [ebp + eax - 0x3c], cl
inc eax
cmp eax, 0x20
jl 0x45145e
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x44], 0xa
jmp 0x4517f2
cmp esi, 0x5c
jne 0x45161f
push 1
push dword [ebp + 0x28]
lea eax, [ebp + 0x50]
push dword [edi + 0x30]
push dword [ebp + 0x68]
push eax
call fcn.0044f80f
mov esi, eax
mov eax, dword [ebp + 0x68]
add esp, 0x14
cmp dword [eax], 0
jne 0x452155
mov ecx, esi
neg ecx
cmp ecx, 4
jne 0x4514ba
push 8
jmp 0x4514ca
cmp ecx, 0x10
jne 0x4514c3
push 0x58
jmp 0x4514ca
cmp ecx, 0xf
jne 0x4514d0
push 0x52
pop esi
jmp 0x45161f
cmp ecx, 0x14
jne 0x4514fa
mov eax, dword [ebp + 0x50]
cmp byte [eax + 1], 0x5c
jne 0x4514ee
add eax, 2
cmp byte [eax], 0x45
jne 0x4514ee
mov dword [ebp + 0x50], eax
jmp 0x4517f2
mov dword [ebp + 0x10], 1
jmp 0x4517f2
test esi, esi
jge 0x45161f
add dword [ebp + 0x44], 2
cmp dword [ebp + 0x7c], 0
mov eax, dword [edi + 8]
jne 0x4515d5
sub ecx, 5
je 0x4515be
dec ecx
je 0x4515a9
dec ecx
je 0x451588
dec ecx
je 0x451569
dec ecx
je 0x45154f
dec ecx
je 0x451537
sub ecx, 9
jmp 0x451605
xor esi, esi
mov cl, byte [eax + esi + 0xa0]
or byte [ebp + esi - 0x3c], cl
inc esi
cmp esi, 0x20
jl 0x451539
jmp 0x4517f2
xor esi, esi
mov cl, byte [eax + esi + 0xa0]
not cl
or byte [ebp + esi - 0x3c], cl
inc esi
cmp esi, 0x20
jl 0x451551
jmp 0x4517f2
lea ecx, [ebp - 0x3c]
xor esi, esi
sub eax, ecx
lea ecx, [ebp + esi - 0x3c]
mov dl, byte [ecx + eax]
or byte [ecx], dl
inc esi
cmp esi, 0x20
jl 0x451570
and byte [ebp - 0x3b], 0xf7
jmp 0x4517f2
lea ecx, [ebp - 0x3c]
xor esi, esi
sub eax, ecx
lea ecx, [ebp + esi - 0x3c]
mov dl, byte [ecx + eax]
not dl
or byte [ecx], dl
inc esi
cmp esi, 0x20
jl 0x45158f
or byte [ebp - 0x3b], 8
jmp 0x4517f2
xor esi, esi
mov cl, byte [eax + esi + 0x40]
or byte [ebp + esi - 0x3c], cl
inc esi
cmp esi, 0x20
jl 0x4515ab
jmp 0x4517f2
xor esi, esi
mov cl, byte [eax + esi + 0x40]
not cl
or byte [ebp + esi - 0x3c], cl
inc esi
cmp esi, 0x20
jl 0x4515c0
jmp 0x4517f2
cmp esi, 0xfffffffa
je 0x4517f2
cmp esi, 0xfffffffb
je 0x4517f2
cmp esi, 0xfffffff6
je 0x4517f2
cmp esi, 0xfffffff7
je 0x4517f2
cmp esi, 0xfffffff8
je 0x4517f2
cmp esi, 0xfffffff9
je 0x4517f2
test byte [ebp + 0x28], 0x40
jne 0x45210a
mov eax, dword [ebp + 0x50]
sub dword [ebp + 0x44], 2
movzx esi, byte [eax]
mov eax, dword [ebp + 0x50]
jmp 0x451635
lea ecx, [eax + 2]
cmp byte [ecx], 0x45
jne 0x45163b
and dword [ebp + 0x10], 0
mov eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax + 1], 0x5c
je 0x451624
cmp dword [ebp + 0x10], 0
mov edx, eax
mov dword [ebp + 0x2c], edx
jne 0x4517b1
cmp byte [eax + 1], 0x2d
jne 0x4517b1
push 2
pop ecx
add eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5c
jne 0x45169c
cmp byte [eax + 1], 0x45
jne 0x45168e
add eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5c
je 0x451661
jmp 0x45168e
cmp byte [eax + 1], 0x51
jne 0x45169c
add eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5c
jne 0x451695
cmp byte [eax + 1], 0x45
jne 0x451695
add eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5c
je 0x451673
jmp 0x45169c
mov dword [ebp + 0x10], 1
mov al, byte [eax]
test al, al
je 0x4517ae
cmp dword [ebp + 0x10], 0
jne 0x4516b4
cmp al, 0x5d
je 0x4517ae
cmp dword [ebp + 0x10], 0
movzx eax, al
mov dword [ebp + 0x48], eax
jne 0x451702
cmp eax, 0x5c
jne 0x451702
push 1
push dword [ebp + 0x28]
lea eax, [ebp + 0x50]
push dword [edi + 0x30]
push dword [ebp + 0x68]
push eax
call fcn.0044f80f
mov dword [ebp + 0x48], eax
mov eax, dword [ebp + 0x68]
add esp, 0x14
cmp dword [eax], 0
jne 0x452155
mov eax, dword [ebp + 0x48]
test eax, eax
jge 0x451702
cmp eax, 0xfffffffc
jne 0x451784
mov dword [ebp + 0x48], 8
mov eax, dword [ebp + 0x48]
cmp eax, esi
jl 0x452115
je 0x4517b1
mov edx, dword [ebp + 0x44]
mov ecx, eax
sub ecx, esi
cmp dword [ebp + 0x7c], 0
lea ecx, [edx + ecx + 1]
mov dword [ebp + 0x44], ecx
mov dword [ebp + 0x30], eax
jne 0x4517f2
cmp esi, eax
jg 0x4517f2
mov eax, dword [ebp + 0x28]
and eax, 1
mov dword [ebp + 0x2c], eax
mov eax, esi
cdq
push 8
pop ecx
idiv ecx
mov ecx, esi
and ecx, 7
mov dl, 1
shl dl, cl
lea eax, [ebp + eax - 0x3c]
or byte [eax], dl
cmp dword [ebp + 0x2c], 0
je 0x45177c
mov eax, dword [edi + 4]
movzx eax, byte [eax + esi]
mov dword [ebp + 0x14], eax
cdq
push 8
pop ecx
idiv ecx
mov ecx, dword [ebp + 0x14]
and ecx, 7
mov dl, 1
shl dl, cl
lea eax, [ebp + eax - 0x3c]
or byte [eax], dl
inc esi
cmp esi, dword [ebp + 0x48]
jle 0x45173f
jmp 0x4517f2
cmp eax, 0xfffffff0
jne 0x451795
mov dword [ebp + 0x48], 0x58
jmp 0x451702
cmp eax, 0xfffffff1
jne 0x4517a6
mov dword [ebp + 0x48], 0x52
jmp 0x451702
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x50], eax
jmp 0x4517b1
mov dword [ebp + 0x50], edx
mov eax, esi
cdq
push 8
pop ecx
idiv ecx
mov ecx, esi
and ecx, 7
mov dl, 1
shl dl, cl
lea eax, [ebp + eax - 0x3c]
or byte [eax], dl
test byte [ebp + 0x28], 1
je 0x4517ec
mov eax, dword [edi + 4]
movzx esi, byte [eax + esi]
mov eax, esi
cdq
push 8
pop ecx
idiv ecx
mov ecx, esi
and ecx, 7
mov dl, 1
shl dl, cl
lea eax, [ebp + eax - 0x3c]
or byte [eax], dl
inc dword [ebp + 0x44]
mov dword [ebp + 0x30], esi
inc dword [ebp + 0x50]
mov eax, dword [ebp + 0x50]
movzx esi, byte [eax]
test esi, esi
je 0x452120
cmp esi, 0x5d
jne 0x451328
cmp dword [ebp + 0x10], 0
jne 0x45132e
cmp dword [ebp + 0x44], 1
jne 0x451894
cmp dword [ebp + 0x40], 0
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0x14], eax
je 0x451847
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x451832
or dword [ebp + 0x38], 0xffffffff
mov eax, dword [ebp + 0x38]
mov dword [ebp + 0xc], eax
mov al, byte [ebp + 0x30]
mov byte [ebx], 0x18
inc ebx
mov byte [ebx], al
inc ebx
jmp 0x45200c
mov al, byte [ebp + 0x30]
mov cl, byte [ebp + 0x28]
and cl, 1
or cl, 0x16
mov byte [ebx], cl
mov ecx, dword [ebp + 0x38]
mov dword [ebp + 0x4c], ebx
inc ebx
mov byte [ebx], al
inc ebx
cmp ecx, 0xfffffffe
jne 0x45187c
or dword [ebp + 0xc], 0xffffffff
mov ecx, dword [ebp + 0x18]
movzx eax, al
or eax, dword [ebp - 0x10]
mov dword [ebp + 0x14], ecx
mov dword [ebp + 0x38], eax
jmp 0x45200c
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0x14], eax
movzx eax, byte [ebx - 1]
or eax, dword [edi + 0x40]
mov dword [ebp + 0xc], ecx
or eax, dword [ebp - 0x10]
jmp 0x450ebd
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x45189e
or dword [ebp + 0x38], 0xffffffff
cmp dword [ebp + 0x40], 0
mov eax, dword [ebp + 0x38]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0x14], eax
je 0x4518d1
mov byte [ebx], 0x49
inc ebx
cmp dword [ebp + 0x7c], 0
jne 0x4518e4
lea eax, [ebp - 0x3c]
push 0x20
mov esi, ebx
sub eax, ebx
pop ecx
mov dl, byte [eax + esi]
not dl
mov byte [esi], dl
inc esi
dec ecx
jne 0x4518c4
jmp 0x4518e4
push 0x20
lea eax, [ebp - 0x3c]
mov byte [ebx], 0x48
push eax
inc ebx
push ebx
call fcn.00454510
add esp, 0xc
add ebx, 0x20
jmp 0x45200c
and dword [ebp + 0x20], 0
mov dword [ebp + 0x34], 1
cmp dword [ebp + 0x4c], 0
je 0x45212b
mov eax, dword [ebp + 0x20]
test eax, eax
jne 0x451914
mov ecx, dword [ebp + 0xc]
mov dword [ebp + 0x38], ecx
mov ecx, dword [ebp + 0x14]
mov dword [ebp + 0x18], ecx
sub eax, dword [ebp + 0x34]
mov edx, dword [ebp + 0x4c]
mov ecx, dword [ebp + 0x50]
neg eax
sbb eax, eax
and dword [ebp + 0x30], 0
and dword [ebp + 0x40], 0
and eax, 0x200
mov esi, edx
inc ecx
mov dword [ebp - 0x48], eax
mov dword [ebp + 0x1c], esi
mov al, byte [ecx]
cmp al, 0x2b
jne 0x45194b
xor eax, eax
mov dword [ebp + 0x40], 1
mov dword [ebp + 0x50], ecx
jmp 0x45195a
cmp al, 0x3f
jne 0x451957
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x50], ecx
jmp 0x45195a
mov eax, dword [ebp - 0x40]
mov cl, byte [edx]
cmp cl, 0x16
mov dword [ebp + 0x3c], eax
je 0x451d89
cmp cl, 0x17
je 0x451d89
cmp cl, 0x18
jne 0x4519aa
cmp dword [ebp + 0x40], 0
movzx eax, byte [edx + 1]
mov dword [ebp + 0x30], 0xd
mov dword [ebp + 0x48], eax
jne 0x451dd5
cmp dword [ebp + 0x34], 0
jge 0x451dd5
push dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
inc eax
push eax
push dword [ebp + 0x48]
push 0x18
jmp 0x451dbc
cmp cl, 0x11
jae 0x4519e2
cmp dword [ebp + 0x40], 0
movzx eax, cl
mov dword [ebp + 0x30], 0x1a
mov dword [ebp + 0x48], eax
jne 0x451dd5
cmp dword [ebp + 0x34], 0
jge 0x451dd5
push dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
inc eax
push eax
push 0
push dword [ebp + 0x48]
jmp 0x451dbc
cmp cl, 0x48
je 0x451d12
cmp cl, 0x49
je 0x451d12
cmp cl, 0x4b
je 0x451d12
cmp cl, 0x58
je 0x451a15
cmp cl, 0x59
je 0x451a15
cmp cl, 0x57
je 0x451a15
cmp cl, 0x5a
jne 0x452136
and dword [ebp + 0x48], 0
and dword [ebp + 0x24], 0
mov eax, ebx
sub eax, edx
cmp cl, 0x5a
mov dword [ebp + 0x44], eax
jne 0x451a33
cmp byte [edx + 3], 0x60
je 0x452141
cmp eax, 0x7530
jg 0x45214c
cmp dword [ebp + 0x34], 0xffffffff
jne 0x451a5c
mov eax, edx
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
add eax, ecx
cmp byte [eax], 0x4f
jne 0x451a46
mov ecx, ebx
sub ecx, eax
mov dword [ebp + 0x48], ecx
cmp dword [ebp + 0x20], 0
jne 0x451aec
cmp dword [ebp + 0x34], 0
jne 0x451a73
mov ebx, edx
jmp 0x451fff
cmp dword [ebp + 0x34], 1
push dword [ebp + 4]
mov esi, dword [ebp + 0x4c]
mov byte [ebx], 0
push edi
jg 0x451aa8
push 1
push esi
call fcn.004500e2
push dword [ebp + 0x44]
inc esi
push dword [ebp + 0x4c]
push esi
call fcn.00454d00
mov al, byte [ebp + 0x3c]
mov ecx, dword [ebp + 0x4c]
add esp, 0x1c
inc ebx
add al, 0x61
mov byte [ecx], al
jmp 0x451adb
push 4
push esi
call fcn.004500e2
push dword [ebp + 0x44]
lea eax, [esi + 4]
push esi
push eax
call fcn.00454d00
mov al, byte [ebp + 0x3c]
add al, 0x61
mov byte [esi], al
add esp, 0x1c
add ebx, 4
inc esi
mov byte [esi], 0x58
inc esi
mov dword [ebp + 0x24], esi
mov byte [esi], 0
mov byte [esi + 1], 0
inc esi
inc esi
dec dword [ebp + 0x34]
mov eax, dword [ebp + 0x34]
mov dword [ebp + 0x4c], esi
mov esi, dword [ebp + 0x1c]
jmp 0x451b89
cmp dword [ebp + 0x20], 1
jle 0x451b7c
mov eax, dword [ebp + 0x7c]
test eax, eax
je 0x451b09
mov ecx, dword [ebp + 0x20]
dec ecx
imul ecx, dword [ebp - 4]
add dword [eax], ecx
jmp 0x451b7c
cmp dword [ebp - 0x18], 0
je 0x451b1b
cmp dword [ebp + 0x18], 0
jge 0x451b1b
mov eax, dword [ebp + 0x38]
mov dword [ebp + 0x18], eax
cmp dword [ebp + 0x20], 1
jle 0x451b7c
mov eax, dword [ebp + 0x20]
mov esi, dword [ebp + 4]
dec eax
mov dword [ebp + 0x2c], eax
push dword [ebp + 0x44]
mov eax, dword [edi + 0x20]
push dword [ebp + 0x4c]
mov dword [ebp + 0x30], eax
push ebx
call fcn.00454510
add esp, 0xc
jmp 0x451b66
mov ecx, dword [edi + 0x20]
xor eax, eax
mov ah, byte [esi]
mov al, byte [esi + 1]
add eax, dword [ebp + 0x44]
sar eax, 8
mov byte [ecx], al
mov al, byte [esi + 1]
add al, byte [ebp + 0x44]
mov ecx, dword [edi + 0x20]
mov byte [ecx + 1], al
add dword [edi + 0x20], 2
inc esi
inc esi
cmp esi, dword [ebp + 0x30]
jb 0x451b42
mov esi, dword [ebp + 0x30]
add ebx, dword [ebp + 0x44]
dec dword [ebp + 0x2c]
mov dword [ebp + 4], esi
jne 0x451b2b
mov esi, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x34]
test eax, eax
jle 0x451b8b
sub eax, dword [ebp + 0x20]
mov dword [ebp + 0x34], eax
test eax, eax
jl 0x451cb0
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x451baf
test eax, eax
jle 0x451baf
mov edx, dword [ebp - 4]
add edx, 7
imul edx, eax
sub edx, 6
add dword [ecx], edx
jmp 0x451c68
dec eax
mov dword [ebp + 0x48], eax
js 0x451c68
mov al, byte [ebp + 0x3c]
add al, 0x61
mov byte [ebp + 0xa], al
mov esi, dword [edi + 0x20]
mov al, byte [ebp + 0xa]
mov byte [ebx], al
inc ebx
cmp dword [ebp + 0x48], 0
mov dword [ebp + 0x2c], esi
je 0x451bf3
mov eax, dword [ebp + 0x24]
mov byte [ebx], 0x58
inc ebx
mov ecx, ebx
sub ecx, eax
neg eax
sbb eax, eax
and eax, ecx
mov ecx, eax
sar ecx, 8
mov dword [ebp + 0x24], ebx
mov byte [ebx], cl
mov byte [ebx + 1], al
inc ebx
inc ebx
push dword [ebp + 0x44]
push dword [ebp + 0x4c]
push ebx
call fcn.00454510
mov eax, dword [ebp + 4]
add esp, 0xc
cmp eax, esi
jae 0x451c56
mov esi, dword [ebp + 0x48]
neg esi
sbb esi, esi
and esi, 3
inc esi
cmp dword [ebp + 0x48], 0
sete cl
dec cl
and cl, 3
inc cl
mov byte [ebp + 0xb], cl
mov edx, dword [edi + 0x20]
xor ecx, ecx
mov ch, byte [eax]
mov cl, byte [eax + 1]
add ecx, esi
add ecx, dword [ebp + 0x44]
sar ecx, 8
mov byte [edx], cl
mov cl, byte [ebp + 0xb]
add cl, byte [ebp + 0x44]
mov edx, dword [edi + 0x20]
add cl, byte [eax + 1]
mov byte [edx + 1], cl
add dword [edi + 0x20], 2
inc eax
inc eax
cmp eax, dword [ebp + 0x2c]
jb 0x451c25
mov esi, dword [ebp + 0x2c]
add ebx, dword [ebp + 0x44]
dec dword [ebp + 0x48]
mov dword [ebp + 4], esi
jns 0x451bc1
mov esi, dword [ebp + 0x1c]
cmp dword [ebp + 0x24], 0
je 0x451f0f
mov esi, dword [ebp + 0x24]
xor edx, edx
mov ecx, ebx
sub ecx, esi
inc ecx
mov eax, ebx
sub eax, ecx
mov dh, byte [eax + 1]
mov dl, byte [eax + 2]
mov byte [ebx], 0x4f
mov byte [ebx + 2], cl
sub esi, edx
mov dword [ebp + 0x2c], edx
neg edx
sbb edx, edx
and esi, edx
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
inc ebx
inc ebx
test esi, esi
mov byte [eax + 1], dl
mov byte [eax + 2], cl
jne 0x451c75
jmp 0x451f0c
xor eax, eax
mov esi, ebx
sub esi, dword [ebp + 0x48]
mov ah, byte [esi + 1]
mov edi, esi
mov al, byte [esi + 2]
sub edi, eax
mov al, byte [ebp + 0x3c]
add al, 0x50
cmp dword [ebp + 0x7c], 0
mov byte [esi], al
jne 0x451f0c
cmp byte [edi], 0x57
je 0x451f0c
mov dword [ebp + 0x30], edi
push 0
push esi
push dword [ebp + 0x30]
call fcn.0044ff2c
add esp, 0xc
test eax, eax
jne 0x451d0a
mov eax, dword [ebp + 0x30]
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
add eax, ecx
cmp byte [eax], 0x4e
mov dword [ebp + 0x30], eax
je 0x451cde
jmp 0x451f0c
add byte [edi], 3
jmp 0x451f0c
cmp dword [ebp + 0x34], 0
je 0x451a6c
mov ecx, dword [ebp + 0x34]
xor esi, esi
inc esi
cmp ecx, esi
je 0x451d29
mov dword [edi + 0x44], esi
cmp dword [ebp + 0x20], 0
jne 0x451d3b
cmp ecx, 0xffffffff
jne 0x451d4d
add al, 0x40
jmp 0x451f09
cmp dword [ebp + 0x20], 1
jne 0x451d58
cmp ecx, 0xffffffff
jne 0x451d58
add al, 0x42
jmp 0x451f09
cmp ecx, esi
jne 0x451d58
add al, 0x44
jmp 0x451f09
add al, 0x46
mov byte [ebx], al
mov eax, dword [ebp + 0x20]
inc ebx
mov edx, eax
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], al
inc ebx
inc ebx
cmp ecx, 0xffffffff
jne 0x451d78
and dword [ebp + 0x34], 0
mov ecx, dword [ebp + 0x34]
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
inc ebx
inc ebx
jmp 0x451f0c
cmp dword [ebp + 0x20], 1
movzx esi, byte [ebx - 1]
mov dword [ebp + 0x48], esi
jle 0x451da1
mov eax, dword [edi + 0x40]
or eax, esi
or eax, dword [ebp - 0x10]
mov dword [ebp + 0x18], eax
cmp dword [ebp + 0x40], 0
jne 0x451dd5
cmp dword [ebp + 0x34], 0
jge 0x451dd5
push dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
inc eax
push eax
push dword [ebp + 0x48]
movzx eax, cl
push eax
mov esi, edi
call fcn.00450182
add esp, 0x10
test eax, eax
je 0x451dd5
and dword [ebp + 0x3c], 0
mov dword [ebp + 0x40], 1
mov eax, dword [ebp + 0x4c]
mov cl, byte [eax]
cmp cl, 0xe
je 0x451dee
cmp cl, 0xd
je 0x451dee
or dword [ebp + 0x24], 0xffffffff
or dword [ebp + 0x44], 0xffffffff
jmp 0x451dfc
movzx ecx, byte [eax + 1]
mov dword [ebp + 0x44], ecx
movzx ecx, byte [eax + 2]
mov dword [ebp + 0x24], ecx
cmp dword [ebp + 0x34], 0
mov esi, ebx
mov ebx, eax
je 0x451fff
mov edx, dword [ebp + 0x34]
xor eax, eax
inc eax
cmp edx, eax
je 0x451e17
mov dword [edi + 0x44], eax
mov eax, dword [ebp + 0x3c]
mov ecx, dword [ebp + 0x30]
add eax, ecx
cmp dword [ebp + 0x20], 0
mov dword [ebp + 0x3c], eax
jne 0x451e4c
cmp edx, 0xffffffff
jne 0x451e31
add al, 0x19
jmp 0x451e59
cmp edx, 1
mov ebx, dword [ebp + 0x4c]
je 0x451eee
add al, 0x1f
mov byte [ebx], al
inc ebx
mov eax, edx
mov byte [ebx + 1], dl
jmp 0x451eff
cmp dword [ebp + 0x20], 1
jne 0x451e8b
cmp edx, 0xffffffff
jne 0x451e64
add al, 0x1b
mov ebx, dword [ebp + 0x4c]
mov byte [ebx], al
inc ebx
jmp 0x451f06
cmp edx, 1
mov ebx, esi
je 0x451fff
mov al, byte [ebp + 0x3c]
add al, 0x1f
mov byte [esi], al
mov eax, dword [ebp + 0x34]
lea ecx, [eax - 1]
sar ecx, 8
lea ebx, [esi + 1]
dec al
mov byte [ebx], cl
mov byte [ebx + 1], al
jmp 0x451f04
mov ebx, dword [ebp + 0x4c]
add cl, 0x21
mov byte [ebx], cl
mov ecx, dword [ebp + 0x20]
inc ebx
sar ecx, 8
mov byte [ebx], cl
mov cl, byte [ebp + 0x20]
mov byte [ebx + 1], cl
inc ebx
inc ebx
test edx, edx
jge 0x451ec2
mov cl, byte [ebp + 0x48]
mov byte [ebx], cl
mov ecx, dword [ebp + 0x44]
inc ebx
test ecx, ecx
jl 0x451ebe
mov byte [ebx], cl
mov cl, byte [ebp + 0x24]
inc ebx
mov byte [ebx], cl
inc ebx
add al, 0x19
jmp 0x451e5c
mov ecx, dword [ebp + 0x20]
cmp dword [ebp + 0x34], ecx
je 0x451f06
mov cl, byte [ebp + 0x48]
mov byte [ebx], cl
mov ecx, dword [ebp + 0x44]
inc ebx
test ecx, ecx
jl 0x451ee0
mov byte [ebx], cl
mov cl, byte [ebp + 0x24]
inc ebx
mov byte [ebx], cl
inc ebx
mov ecx, dword [ebp + 0x34]
sub ecx, dword [ebp + 0x20]
cmp ecx, 1
mov dword [ebp + 0x34], ecx
jne 0x451ef5
add al, 0x1d
jmp 0x451e5c
add al, 0x1f
mov byte [ebx], al
inc ebx
mov eax, ecx
mov byte [ebx + 1], cl
sar eax, 8
mov byte [ebx], al
inc ebx
inc ebx
mov al, byte [ebp + 0x48]
mov byte [ebx], al
inc ebx
mov esi, dword [ebp + 0x1c]
cmp dword [ebp + 0x40], 0
je 0x451fff
mov al, byte [esi]
cmp al, 0x21
je 0x451f27
cmp al, 0x3b
je 0x451f27
cmp al, 0x2e
jne 0x451f36
movzx eax, al
movzx eax, byte [eax + 0x45e4d0]
add esi, eax
mov dword [ebp + 0x1c], esi
mov eax, ebx
sub eax, esi
test eax, eax
mov dword [ebp + 0x2c], eax
jle 0x451fff
movzx eax, byte [esi]
cmp eax, 0x2a
jg 0x451f95
je 0x451f90
sub eax, 0x19
je 0x451f8b
push 2
pop ecx
sub eax, ecx
je 0x451f86
sub eax, ecx
je 0x451f81
sub eax, ecx
je 0x451f7c
sub eax, 7
je 0x451f74
sub eax, ecx
jne 0x451fab
mov byte [esi], 0x30
jmp 0x451fff
mov byte [esi], 0x2f
jmp 0x451fff
mov byte [esi], 0x25
jmp 0x451fff
mov byte [esi], 0x24
jmp 0x451fff
mov byte [esi], 0x23
jmp 0x451fff
mov byte [esi], 0x22
jmp 0x451fff
mov byte [esi], 0x31
jmp 0x451fff
sub eax, 0x2c
je 0x451ffc
sub eax, 7
je 0x451ff7
dec eax
dec eax
je 0x451ff2
dec eax
dec eax
je 0x451fed
dec eax
dec eax
je 0x451fe8
push dword [ebp + 0x2c]
push esi
add esi, 3
push esi
call fcn.00454d00
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x2c]
mov byte [eax], 0x57
add ecx, 3
add ebx, 3
mov byte [ebx], 0x4f
add esp, 0xc
inc ebx
mov byte [ebx + 1], cl
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov edx, dword [ebp + 0x1c]
mov byte [edx + 1], al
mov eax, dword [ebp + 0x1c]
inc ebx
inc ebx
mov byte [eax + 2], cl
jmp 0x451fff
mov byte [esi], 0x3f
jmp 0x451fff
mov byte [esi], 0x3e
jmp 0x451fff
mov byte [esi], 0x3d
jmp 0x451fff
mov byte [esi], 0x3c
jmp 0x451fff
mov byte [esi], 0x32
mov eax, dword [ebp - 0x48]
mov edi, dword [ebp + 0x78]
and dword [ebp + 0x4c], 0
or dword [edi + 0x40], eax
inc dword [ebp + 0x50]
mov esi, dword [ebp + 0x50]
mov ecx, dword [ebp + 0x7c]
jmp 0x4505ab
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x34
jmp 0x452155
mov eax, dword [ebp + 0x68]
inc dword [ebp + 0x50]
mov dword [eax], 0x1c
jmp 0x452155
mov eax, dword [ebp + 0x68]
dec ecx
mov dword [ebp + 0x50], ecx
mov dword [eax], 0x1a
jmp 0x452155
mov eax, dword [ebp + 0x68]
dec esi
mov dword [eax], 0xc
mov dword [ebp + 0x50], esi
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x31
jmp 0x452155
mov eax, dword [ebp + 0x68]
inc esi
mov dword [ebp + 0x50], esi
mov dword [eax], 0x18
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x36
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1b
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xe
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2a
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xf
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x28
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2d
jmp 0x452155
mov ecx, dword [ebp + 0x50]
xor eax, eax
cmp byte [ecx + 1], 0x3a
setne al
dec eax
and eax, 0xffffffee
add eax, 0x1f
jmp 0x4509da
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1f
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1e
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 7
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 8
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 6
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 9
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xb
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x37
jmp 0x452155
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x32
mov eax, dword [ebp + 0x50]
mov ecx, dword [ebp + 0x64]
mov dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
add ebp, 0x54
leave
ret