Function at 0x4502aa
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 0x45037d
mov edx, dword [edi + 0x10]
add edx, 0x1000
cmp ebx, edx
ja 0x451d8a
cmp ebx, dword [ebp - 8]
jae 0x45033e
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 0x450375
cmp ecx, dword [ebp - 0x1c]
jbe 0x450378
mov esi, dword [ebp - 0x1c]
mov eax, ebx
sub eax, ecx
push eax
push ecx
push esi
call fcn.00454a70
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 0x450378
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 8], ebx
jmp 0x45038f
mov ecx, dword [edi + 0x10]
add ecx, 0x1000
cmp dword [edi + 0x20], ecx
ja 0x451d8a
cmp dword [ebp + 0x10], 0
je 0x4503ba
test eax, eax
je 0x4503ba
cmp eax, 0x5c
jne 0x4515ba
lea ecx, [esi + 1]
cmp byte [ecx], 0x45
jne 0x4515ba
and dword [ebp + 0x10], 0
mov dword [ebp + 0x50], ecx
jmp 0x451d7c
cmp eax, 0x2a
je 0x4503e3
cmp eax, 0x2b
je 0x4503e3
cmp eax, 0x3f
je 0x4503e3
cmp eax, 0x7b
jne 0x4503dd
lea eax, [esi + 1]
call fcn.0044f82f
test eax, eax
mov eax, dword [ebp + 0x48]
jne 0x4503e3
and dword [ebp + 0x2c], 0
jmp 0x4503ea
mov dword [ebp + 0x2c], 1
test byte [ebp + 0x28], 8
je 0x450454
mov ecx, dword [edi + 0xc]
test byte [eax + ecx], 1
jne 0x451d7c
mov eax, dword [ebp + 0x48]
cmp eax, 0x23
mov esi, dword [ebp + 0x50]
jne 0x450454
jmp 0x4504c2
cmp dword [edi + 0x48], 0
je 0x4504a0
mov eax, dword [edi + 0x1c]
cmp esi, eax
jae 0x4504c2
push 0
lea ecx, [edi + 0x4c]
push ecx
push eax
push esi
call fcn.0041a680
mov esi, dword [ebp + 0x50]
add esp, 0x10
test eax, eax
je 0x4504c2
mov eax, dword [edi + 0x4c]
lea eax, [esi + eax - 1]
mov dword [ebp + 0x50], eax
cmp byte [eax], 0
jne 0x451d7c
mov esi, eax
xor eax, eax
cmp eax, 0x2e
push 0x58
pop ecx
jg 0x450c78
je 0x450c57
mov edx, eax
sub edx, 0
je 0x450ca3
sub edx, 0x24
je 0x450c4b
sub edx, 4
je 0x4504d8
dec edx
je 0x450ca3
dec edx
je 0x4504d2
dec edx
jne 0x4515ba
mov dword [ebp + 0x20], 1
or dword [ebp + 0x34], 0xffffffff
jmp 0x451667
mov ecx, dword [edi + 0x4c]
mov edx, dword [edi + 0x1c]
sub edx, ecx
cmp esi, edx
ja 0x4504c2
cmp al, byte [edi + 0x50]
jne 0x4504c2
cmp ecx, 1
je 0x45043d
mov al, byte [esi + 1]
cmp al, byte [edi + 0x51]
je 0x45043d
inc esi
mov dword [ebp + 0x50], esi
mov al, byte [esi]
test al, al
jne 0x45040d
jmp 0x450452
and dword [ebp + 0x20], 0
jmp 0x450497
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 0x450ba9
inc esi
mov dword [ebp + 0x50], esi
mov dl, byte [esi]
movzx eax, dl
cmp eax, 0x3a
jg 0x4507ab
je 0x45079f
cmp eax, 0x21
je 0x450792
cmp eax, 0x23
je 0x450763
cmp eax, 0x26
je 0x450754
cmp eax, 0x27
je 0x45097f
cmp eax, 0x28
je 0x450554
cmp eax, 0x2f
jle 0x4507d3
cmp eax, 0x39
jle 0x4508cc
jmp 0x4507d3
cmp byte [esi + 1], 0x3f
mov dword [ebp + 0x44], 0x5a
jne 0x45057c
mov al, byte [esi + 2]
cmp al, 0x3d
je 0x450abf
cmp al, 0x21
je 0x450abf
cmp al, 0x3c
je 0x450abf
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 0x4505a9
add edx, 2
cmp byte [edx], 0x26
jne 0x4505a9
or dword [ebp + 0x40], 0xffffffff
mov dword [ebp + 0x50], edx
mov byte [ebx + 3], 0x5f
jmp 0x4505cc
cmp cl, 0x3c
jne 0x4505ba
mov dword [ebp + 0x40], 0x3e
mov dword [ebp + 0x50], eax
jmp 0x4505cc
cmp cl, 0x27
jne 0x4505c8
mov dword [ebp + 0x40], 0x27
jmp 0x4505b5
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 0x451d98
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 0x45061f
test esi, esi
jl 0x45060f
test byte [eax + 0x45db00], 4
je 0x45060c
lea esi, [esi + esi*4]
lea esi, [eax + esi*2 - 0x30]
jmp 0x45060f
or esi, 0xffffffff
inc ecx
mov dword [ebp + 0x50], ecx
movzx eax, byte [ecx]
test byte [edx + eax], 0x10
jne 0x4505f6
mov dword [ebp + 0x48], esi
mov eax, ecx
sub eax, dword [ebp + 0x3c]
cmp dword [ebp + 0x40], 0
mov dword [ebp + 0x24], eax
jle 0x45063d
movzx eax, byte [ecx]
inc ecx
cmp eax, dword [ebp + 0x40]
mov dword [ebp + 0x50], ecx
jne 0x451da9
mov al, byte [ecx]
inc ecx
cmp al, 0x29
mov dword [ebp + 0x50], ecx
jne 0x451da9
cmp dword [ebp + 0x7c], 0
jne 0x450abf
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x450686
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x3c]
call fcn.004550f0
add esp, 0xc
test eax, eax
je 0x450686
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x450662
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jge 0x4506a4
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 0x450abf
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.0044f926
add esp, 0xc
test eax, eax
jg 0x450694
xor eax, eax
cmp dword [ebp + 0x40], eax
jne 0x451e25
mov edx, dword [ebp + 0x3c]
cmp byte [edx], 0x52
jne 0x45070d
cmp dword [ebp + 0x24], esi
jle 0x450702
movzx ecx, byte [esi + edx]
test byte [ecx + 0x45db00], 4
je 0x451e25
inc esi
cmp esi, dword [ebp + 0x24]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
jl 0x4506e0
test eax, eax
jne 0x450707
mov eax, 0xffff
mov byte [ebx + 3], 0x5f
jmp 0x450694
cmp dword [ebp + 0x24], 6
jne 0x450735
push 6
push str.DEFINE
push dword [ebp + 0x3c]
call fcn.004550f0
add esp, 0xc
test eax, eax
jne 0x450735
mov byte [ebx + 3], 0x60
mov dword [ebp + 0x30], esi
jmp 0x450abf
mov eax, dword [ebp + 0x48]
test eax, eax
jg 0x450694
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
mov ecx, dword [ebp + 0x68]
mov dword [ecx], eax
jmp 0x451ec5
push 0x29
pop ecx
mov dword [ebp + 0x30], 1
jmp 0x450dd9
inc esi
mov dword [ebp + 0x50], esi
mov al, byte [esi]
test al, al
je 0x450784
cmp al, 0x29
je 0x45077b
inc esi
mov dword [ebp + 0x50], esi
mov al, byte [esi]
test al, al
jne 0x45076d
cmp byte [esi], 0
jne 0x451d7c
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x12
jmp 0x451ec5
mov dword [ebp + 0x44], 0x53
inc esi
jmp 0x450ad6
mov dword [ebp + 0x44], ecx
inc esi
mov dword [ebp + 0x50], esi
jmp 0x450abf
sub eax, 0x3c
je 0x45095c
dec eax
je 0x450950
dec eax
je 0x450944
sub eax, 0x12
je 0x45090e
dec eax
dec eax
je 0x4508c8
and dword [ebp + 0x44], 0
and dword [ebp + 0x40], 0
lea eax, [ebp + 0x40]
jmp 0x45084b
cmp dl, 0x3a
je 0x450850
movzx edx, dl
inc esi
cmp edx, 0x69
mov dword [ebp + 0x50], esi
jg 0x450829
je 0x450824
cmp edx, 0x2d
je 0x45081f
cmp edx, 0x4a
je 0x450815
cmp edx, 0x55
je 0x45080f
cmp edx, ecx
jne 0x451dbb
or dword [eax], 0x40
jmp 0x450849
or byte [eax + 1], 2
jmp 0x450849
or byte [eax + 2], 8
or byte [edi + 0x3f], 8
jmp 0x450849
lea eax, [ebp + 0x44]
jmp 0x450849
or dword [eax], 1
jmp 0x450849
cmp edx, 0x6d
je 0x450846
cmp edx, 0x73
je 0x450841
cmp edx, 0x78
jne 0x451dbb
or dword [eax], 8
jmp 0x450849
or dword [eax], 4
jmp 0x450849
or dword [eax], 2
mov dl, byte [esi]
cmp dl, 0x29
jne 0x4507e0
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 0x45079f
mov ecx, dword [edi + 0x14]
add ecx, 3
cmp ebx, ecx
jne 0x450887
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x45087f
cmp dword [ecx], 6
jne 0x450887
mov dword [edi + 0x3c], eax
mov dword [ebp + 0x28], eax
jmp 0x4508bf
mov ecx, eax
xor ecx, dword [ebp + 0x28]
test cl, 7
je 0x45089d
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 0x451d7c
inc esi
mov dword [ebp + 0x50], esi
movzx eax, byte [esi]
xor ecx, ecx
test byte [eax + 0x45db00], 4
mov dword [ebp + 0x48], ecx
je 0x4508f7
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 + 0x45db00], 4
jne 0x4508dd
mov dword [ebp + 0x48], ecx
cmp byte [esi], 0x29
je 0x450e9a
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1d
jmp 0x451ec5
inc esi
mov dword [ebp + 0x50], esi
mov dl, byte [esi]
cmp dl, 0x3d
je 0x450931
cmp dl, 0x3e
je 0x450931
cmp dl, 0x3c
je 0x45097f
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x29
jmp 0x451ec5
xor eax, eax
cmp dl, 0x3e
sete al
push 0x29
pop ecx
mov dword [ebp + 0x30], eax
jmp 0x450dd9
mov dword [ebp + 0x44], 0x57
jmp 0x4507a2
mov dword [ebp + 0x44], 0x52
jmp 0x450799
mov al, byte [esi + 1]
cmp al, 0x21
je 0x450acd
cmp al, 0x3d
je 0x450ac4
mov ecx, dword [edi + 0xc]
movzx eax, al
test byte [eax + ecx], 0x10
je 0x451ddb
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 0x4509b3
mov eax, ecx
inc esi
mov dword [ebp + 0x50], esi
movzx ecx, byte [esi]
test byte [ecx + eax], 0x10
jne 0x4509a6
mov eax, esi
sub eax, dword [ebp + 0x3c]
cmp dword [ebp + 0x7c], 0
mov dword [ebp + 0x24], eax
je 0x450a00
movzx ecx, byte [esi]
cmp ecx, dword [ebp + 0x40]
jne 0x451e17
cmp dword [edi + 0x28], 0x2710
jge 0x451dcd
lea ecx, [eax + 3]
cmp ecx, dword [edi + 0x2c]
jle 0x450a9f
cmp eax, 0x20
mov dword [edi + 0x2c], ecx
jle 0x450a9f
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x30
jmp 0x451ec5
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x450a71
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x3c]
call fcn.00455130
add esp, 0xc
test eax, eax
jne 0x450a46
mov eax, dword [ebp + 0x24]
cmp byte [esi + eax + 2], 0
jne 0x450a41
test byte [ebp + 0x2a], 8
jne 0x450a48
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2b
jmp 0x451ec5
or eax, 0xffffffff
test eax, eax
jl 0x450a58
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x450a0d
jmp 0x450a71
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.00454a70
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.00454280
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 0x450add
mov dword [ebp + 0x44], 0x54
jmp 0x450ad4
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 0x450afa
cmp ecx, 0x55
jne 0x450afd
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.00451ed7
add esp, 0x30
test eax, eax
je 0x451ec5
mov edx, dword [ebp + 0x44]
cmp edx, 0x5a
jne 0x450b6d
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 0x450b4b
cmp byte [ebx + 3], 0x60
jne 0x450bba
cmp esi, 1
jg 0x451ded
push 0x60
pop edx
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x50]
cmp byte [eax], 0x29
jne 0x451e09
mov eax, dword [ebp + 0x7c]
xor esi, esi
cmp eax, esi
je 0x450bd3
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 0x450bd6
test ah, 0x10
je 0x450aa6
mov dword [ebp + 0x44], ecx
jmp 0x450abf
cmp esi, 2
jg 0x451dfb
cmp esi, 1
jne 0x450b6d
or ecx, 0xffffffff
mov dword [ebp], ecx
mov dword [ebp - 0x14], ecx
jmp 0x450b70
mov ebx, dword [ebp + 0x1c]
cmp edx, 0x60
je 0x451d7c
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 0x450c35
cmp eax, 0xfffffffe
jne 0x450c12
cmp ecx, esi
jl 0x450c08
mov dword [ebp + 0x38], ecx
mov dword [ebp - 0x18], 1
jmp 0x450c0c
or dword [ebp + 0x38], 0xffffffff
or dword [ebp + 0xc], 0xffffffff
jmp 0x450c21
cmp ecx, esi
jl 0x450c21
cmp dword [ebp], esi
jge 0x450c2a
or ecx, dword [ebp + 0x40]
mov dword [ebp], ecx
cmp dword [ebp], esi
jl 0x451d7c
mov eax, dword [ebp]
mov dword [ebp + 0x18], eax
jmp 0x451d7c
cmp edx, 0x52
jne 0x451d7c
mov eax, dword [ebp]
cmp eax, esi
jl 0x451d7c
jmp 0x450c2d
and dword [ebp + 0x4c], 0
mov byte [ebx], 0x15
jmp 0x4515b1
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x450c61
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 0x4515b1
mov ecx, eax
sub ecx, 0x3f
je 0x45165c
sub ecx, 0x1c
je 0x45102c
dec ecx
je 0x450d21
dec ecx
dec ecx
je 0x450d05
sub ecx, 0x1d
je 0x450cd1
dec ecx
jne 0x4515ba
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 0x450cc9
sub ebx, dword [ebp - 8]
add dword [eax], ebx
xor eax, eax
inc eax
jmp 0x451ecf
cmp dword [ebp + 0x2c], 0
je 0x4515ba
push dword [ebp + 0x68]
lea eax, [ebp + 0x34]
push eax
lea eax, [ebp + 0x20]
push eax
lea eax, [esi + 1]
call fcn.0044f891
mov dword [ebp + 0x50], eax
mov eax, dword [ebp + 0x68]
add esp, 0xc
cmp dword [eax], 0
jne 0x451ec5
jmp 0x451667
test byte [ebp + 0x28], 2
je 0x450d15
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x450d15
or dword [ebp + 0x38], 0xffffffff
and dword [ebp + 0x4c], 0
mov byte [ebx], 0x14
jmp 0x4515b1
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.0044f57f
mov ecx, dword [ebp + 0x68]
add esp, 0x14
cmp dword [ecx], 0
jne 0x451ec5
test eax, eax
jge 0x4515ba
mov ecx, eax
neg ecx
cmp ecx, 0x14
jne 0x450d7d
mov eax, dword [ebp + 0x50]
cmp byte [eax + 1], 0x5c
jne 0x450d71
add eax, 2
cmp byte [eax], 0x45
jne 0x450d71
mov dword [ebp + 0x50], eax
jmp 0x451d7c
mov dword [ebp + 0x10], 1
jmp 0x451d7c
cmp ecx, 0x13
je 0x451d7c
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x450d9a
cmp ecx, 4
jle 0x450d9a
cmp ecx, 0x11
jge 0x450d9a
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 0x450fac
mov esi, dword [ebp + 0x50]
inc esi
mov dl, byte [esi]
cmp dl, 0x3c
je 0x450dc3
cmp dl, 0x27
jne 0x450fac
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 0x450dfb
mov eax, edx
inc esi
mov dword [ebp + 0x50], esi
movzx edx, byte [esi]
test byte [edx + eax], 0x10
jne 0x450dee
mov eax, esi
sub eax, dword [ebp + 0x3c]
cmp dword [ebp + 0x7c], 0
mov dword [ebp + 0x24], eax
je 0x450e23
movzx edx, byte [esi]
cmp edx, ecx
jne 0x451e17
cmp eax, 0x20
jg 0x4509f2
and dword [ebp + 0x48], 0
jmp 0x450e90
and dword [ebp + 0x4c], 0
cmp dword [edi + 0x28], 0
mov esi, dword [edi + 0x24]
jle 0x450e54
push dword [ebp + 0x24]
lea eax, [esi + 2]
push eax
push dword [ebp + 0x3c]
call fcn.004550f0
add esp, 0xc
test eax, eax
je 0x450e54
add esi, dword [edi + 0x2c]
inc dword [ebp + 0x4c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jl 0x450e30
mov eax, dword [ebp + 0x4c]
cmp eax, dword [edi + 0x28]
jge 0x450e67
movzx eax, byte [esi + 1]
mov ah, byte [esi]
mov dword [ebp + 0x48], eax
jmp 0x450e90
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.0044f926
add esp, 0xc
test eax, eax
mov dword [ebp + 0x48], eax
jle 0x451e25
cmp dword [ebp + 0x30], 0
je 0x450fb9
mov eax, dword [edi + 0x14]
xor edx, edx
cmp dword [ebp + 0x7c], edx
mov dword [ebp + 0x4c], ebx
mov dword [ebp + 0x40], eax
jne 0x450f1a
cmp dword [ebp + 0x48], edx
mov byte [ebx], dl
je 0x450ec0
push dword [ebp + 0x48]
mov eax, dword [edi + 0x14]
call fcn.0044fc5c
pop ecx
mov dword [ebp + 0x40], eax
cmp eax, edx
jne 0x450f67
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.0044f926
add esp, 0xc
test eax, eax
jl 0x451e25
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 0x451d7c
or dword [ebp + 0x38], 0xffffffff
jmp 0x451d7c
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x450f1a
mov esi, dword [ebp + 0x74]
test esi, esi
je 0x451e33
mov ecx, dword [esi + 4]
cmp ecx, eax
jb 0x451e33
push 0
push ebx
push ecx
call fcn.0044fc9c
add esp, 0xc
test eax, eax
je 0x450f17
mov esi, dword [esi]
test esi, esi
je 0x451e33
mov eax, dword [ebp + 0x40]
jmp 0x450f7e
cmp ecx, 0x16
jl 0x450ff7
push 0xffffffffffffffea
pop ecx
sub ecx, eax
mov dword [ebp + 0x48], ecx
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x450fc3
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 0x450fe3
shl eax, cl
or dword [edi + 0x38], eax
cmp ecx, dword [edi + 0x34]
jle 0x451d7c
mov dword [edi + 0x34], ecx
jmp 0x451d7c
cmp ecx, 0x10
je 0x451e41
cmp ecx, 0xd
je 0x451e41
cmp ecx, 0xe
je 0x451e41
cmp ecx, 4
jle 0x451021
cmp ecx, 0x11
jge 0x451021
mov dword [ebp + 0x4c], ebx
jmp 0x451025
and dword [ebp + 0x4c], 0
neg al
jmp 0x4515af
mov al, byte [esi + 1]
cmp al, 0x3a
mov dword [ebp + 0x4c], ebx
je 0x45103e
cmp al, 0x2e
je 0x45103e
cmp al, 0x3d
jne 0x451054
lea eax, [ebp - 0xc]
push eax
mov ecx, edi
mov eax, esi
call fcn.0044fdde
test eax, eax
pop ecx
jne 0x451e4c
inc dword [ebp + 0x50]
mov eax, dword [ebp + 0x50]
movzx esi, byte [eax]
cmp esi, 0x5e
jne 0x451074
inc dword [ebp + 0x50]
mov eax, dword [ebp + 0x50]
movzx esi, byte [eax]
mov dword [ebp + 0x40], 1
jmp 0x451078
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.00454750
add esp, 0xc
test esi, esi
je 0x451e90
cmp dword [ebp + 0x10], 0
je 0x4510bd
cmp esi, 0x5c
jne 0x45138f
mov eax, dword [ebp + 0x50]
inc eax
cmp byte [eax], 0x45
jne 0x45138f
and dword [ebp + 0x10], 0
jmp 0x451256
cmp esi, 0x5b
jne 0x4511ef
mov eax, dword [ebp + 0x50]
mov al, byte [eax + 1]
cmp al, 0x3a
je 0x4510dc
cmp al, 0x2e
je 0x4510dc
cmp al, 0x3d
jne 0x45138f
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp + 0x50]
mov ecx, edi
call fcn.0044fdde
test eax, eax
pop ecx
je 0x45138f
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 0x451e64
inc eax
inc eax
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5e
jne 0x45111f
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.0044fe14
test eax, eax
pop ecx
pop ecx
jl 0x451e6f
test byte [ebp + 0x28], 1
je 0x451142
cmp eax, 2
jg 0x451142
xor eax, eax
lea eax, [eax + eax*2]
mov esi, eax
shl esi, 2
mov eax, dword [esi + 0x45da58]
add eax, dword [ebp + 0x14]
push 0x20
push eax
lea eax, [ebp - 0x68]
push eax
call fcn.00454280
mov eax, dword [esi + 0x45da5c]
mov edx, dword [esi + 0x45da60]
add esp, 0xc
test eax, eax
jl 0x45119b
mov esi, dword [ebp + 0x14]
xor ecx, ecx
add esi, eax
test edx, edx
jl 0x45118c
mov al, byte [esi + ecx]
or byte [ebp + ecx - 0x68], al
inc ecx
cmp ecx, 0x20
jl 0x45117d
jmp 0x45119b
mov al, byte [esi + ecx]
not al
and byte [ebp + ecx - 0x68], al
inc ecx
cmp ecx, 0x20
jl 0x45118c
xor eax, eax
cmp edx, eax
jge 0x4511a3
neg edx
cmp edx, 1
jne 0x4511ae
and byte [ebp - 0x67], 0xc3
jmp 0x4511b7
cmp edx, 2
jne 0x4511b7
and byte [ebp - 0x5d], 0x7f
cmp dword [ebp + 0x2c], eax
je 0x4511ce
mov cl, byte [ebp + eax - 0x68]
not cl
or byte [ebp + eax - 0x3c], cl
inc eax
cmp eax, 0x20
jl 0x4511bc
jmp 0x4511dc
mov cl, byte [ebp + eax - 0x68]
or byte [ebp + eax - 0x3c], cl
inc eax
cmp eax, 0x20
jl 0x4511ce
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x44], 0xa
jmp 0x451562
cmp esi, 0x5c
jne 0x45138f
push 1
push dword [ebp + 0x28]
lea eax, [ebp + 0x50]
push dword [edi + 0x30]
push dword [ebp + 0x68]
push eax
call fcn.0044f57f
mov esi, eax
mov eax, dword [ebp + 0x68]
add esp, 0x14
cmp dword [eax], 0
jne 0x451ec5
mov ecx, esi
neg ecx
cmp ecx, 4
jne 0x45122a
push 8
jmp 0x45123a
cmp ecx, 0x10
jne 0x451233
push 0x58
jmp 0x45123a
cmp ecx, 0xf
jne 0x451240
push 0x52
pop esi
jmp 0x45138f
cmp ecx, 0x14
jne 0x45126a
mov eax, dword [ebp + 0x50]
cmp byte [eax + 1], 0x5c
jne 0x45125e
add eax, 2
cmp byte [eax], 0x45
jne 0x45125e
mov dword [ebp + 0x50], eax
jmp 0x451562
mov dword [ebp + 0x10], 1
jmp 0x451562
test esi, esi
jge 0x45138f
add dword [ebp + 0x44], 2
cmp dword [ebp + 0x7c], 0
mov eax, dword [edi + 8]
jne 0x451345
sub ecx, 5
je 0x45132e
dec ecx
je 0x451319
dec ecx
je 0x4512f8
dec ecx
je 0x4512d9
dec ecx
je 0x4512bf
dec ecx
je 0x4512a7
sub ecx, 9
jmp 0x451375
xor esi, esi
mov cl, byte [eax + esi + 0xa0]
or byte [ebp + esi - 0x3c], cl
inc esi
cmp esi, 0x20
jl 0x4512a9
jmp 0x451562
xor esi, esi
mov cl, byte [eax + esi + 0xa0]
not cl
or byte [ebp + esi - 0x3c], cl
inc esi
cmp esi, 0x20
jl 0x4512c1
jmp 0x451562
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 0x4512e0
and byte [ebp - 0x3b], 0xf7
jmp 0x451562
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 0x4512ff
or byte [ebp - 0x3b], 8
jmp 0x451562
xor esi, esi
mov cl, byte [eax + esi + 0x40]
or byte [ebp + esi - 0x3c], cl
inc esi
cmp esi, 0x20
jl 0x45131b
jmp 0x451562
xor esi, esi
mov cl, byte [eax + esi + 0x40]
not cl
or byte [ebp + esi - 0x3c], cl
inc esi
cmp esi, 0x20
jl 0x451330
jmp 0x451562
cmp esi, 0xfffffffa
je 0x451562
cmp esi, 0xfffffffb
je 0x451562
cmp esi, 0xfffffff6
je 0x451562
cmp esi, 0xfffffff7
je 0x451562
cmp esi, 0xfffffff8
je 0x451562
cmp esi, 0xfffffff9
je 0x451562
test byte [ebp + 0x28], 0x40
jne 0x451e7a
mov eax, dword [ebp + 0x50]
sub dword [ebp + 0x44], 2
movzx esi, byte [eax]
mov eax, dword [ebp + 0x50]
jmp 0x4513a5
lea ecx, [eax + 2]
cmp byte [ecx], 0x45
jne 0x4513ab
and dword [ebp + 0x10], 0
mov eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax + 1], 0x5c
je 0x451394
cmp dword [ebp + 0x10], 0
mov edx, eax
mov dword [ebp + 0x2c], edx
jne 0x451521
cmp byte [eax + 1], 0x2d
jne 0x451521
push 2
pop ecx
add eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5c
jne 0x45140c
cmp byte [eax + 1], 0x45
jne 0x4513fe
add eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5c
je 0x4513d1
jmp 0x4513fe
cmp byte [eax + 1], 0x51
jne 0x45140c
add eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5c
jne 0x451405
cmp byte [eax + 1], 0x45
jne 0x451405
add eax, ecx
mov dword [ebp + 0x50], eax
cmp byte [eax], 0x5c
je 0x4513e3
jmp 0x45140c
mov dword [ebp + 0x10], 1
mov al, byte [eax]
test al, al
je 0x45151e
cmp dword [ebp + 0x10], 0
jne 0x451424
cmp al, 0x5d
je 0x45151e
cmp dword [ebp + 0x10], 0
movzx eax, al
mov dword [ebp + 0x48], eax
jne 0x451472
cmp eax, 0x5c
jne 0x451472
push 1
push dword [ebp + 0x28]
lea eax, [ebp + 0x50]
push dword [edi + 0x30]
push dword [ebp + 0x68]
push eax
call fcn.0044f57f
mov dword [ebp + 0x48], eax
mov eax, dword [ebp + 0x68]
add esp, 0x14
cmp dword [eax], 0
jne 0x451ec5
mov eax, dword [ebp + 0x48]
test eax, eax
jge 0x451472
cmp eax, 0xfffffffc
jne 0x4514f4
mov dword [ebp + 0x48], 8
mov eax, dword [ebp + 0x48]
cmp eax, esi
jl 0x451e85
je 0x451521
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 0x451562
cmp esi, eax
jg 0x451562
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 0x4514ec
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 0x4514af
jmp 0x451562
cmp eax, 0xfffffff0
jne 0x451505
mov dword [ebp + 0x48], 0x58
jmp 0x451472
cmp eax, 0xfffffff1
jne 0x451516
mov dword [ebp + 0x48], 0x52
jmp 0x451472
mov eax, dword [ebp + 0x2c]
mov dword [ebp + 0x50], eax
jmp 0x451521
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 0x45155c
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 0x451e90
cmp esi, 0x5d
jne 0x451098
cmp dword [ebp + 0x10], 0
jne 0x45109e
cmp dword [ebp + 0x44], 1
jne 0x451604
cmp dword [ebp + 0x40], 0
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0x14], eax
je 0x4515b7
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x4515a2
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 0x451d7c
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 0x4515ec
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 0x451d7c
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 0x450c2d
cmp dword [ebp + 0x38], 0xfffffffe
jne 0x45160e
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 0x451641
mov byte [ebx], 0x49
inc ebx
cmp dword [ebp + 0x7c], 0
jne 0x451654
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 0x451634
jmp 0x451654
push 0x20
lea eax, [ebp - 0x3c]
mov byte [ebx], 0x48
push eax
inc ebx
push ebx
call fcn.00454280
add esp, 0xc
add ebx, 0x20
jmp 0x451d7c
and dword [ebp + 0x20], 0
mov dword [ebp + 0x34], 1
cmp dword [ebp + 0x4c], 0
je 0x451e9b
mov eax, dword [ebp + 0x20]
test eax, eax
jne 0x451684
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 0x4516bb
xor eax, eax
mov dword [ebp + 0x40], 1
mov dword [ebp + 0x50], ecx
jmp 0x4516ca
cmp al, 0x3f
jne 0x4516c7
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x50], ecx
jmp 0x4516ca
mov eax, dword [ebp - 0x40]
mov cl, byte [edx]
cmp cl, 0x16
mov dword [ebp + 0x3c], eax
je 0x451af9
cmp cl, 0x17
je 0x451af9
cmp cl, 0x18
jne 0x45171a
cmp dword [ebp + 0x40], 0
movzx eax, byte [edx + 1]
mov dword [ebp + 0x30], 0xd
mov dword [ebp + 0x48], eax
jne 0x451b45
cmp dword [ebp + 0x34], 0
jge 0x451b45
push dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
inc eax
push eax
push dword [ebp + 0x48]
push 0x18
jmp 0x451b2c
cmp cl, 0x11
jae 0x451752
cmp dword [ebp + 0x40], 0
movzx eax, cl
mov dword [ebp + 0x30], 0x1a
mov dword [ebp + 0x48], eax
jne 0x451b45
cmp dword [ebp + 0x34], 0
jge 0x451b45
push dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
inc eax
push eax
push 0
push dword [ebp + 0x48]
jmp 0x451b2c
cmp cl, 0x48
je 0x451a82
cmp cl, 0x49
je 0x451a82
cmp cl, 0x4b
je 0x451a82
cmp cl, 0x58
je 0x451785
cmp cl, 0x59
je 0x451785
cmp cl, 0x57
je 0x451785
cmp cl, 0x5a
jne 0x451ea6
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 0x4517a3
cmp byte [edx + 3], 0x60
je 0x451eb1
cmp eax, 0x7530
jg 0x451ebc
cmp dword [ebp + 0x34], 0xffffffff
jne 0x4517cc
mov eax, edx
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
add eax, ecx
cmp byte [eax], 0x4f
jne 0x4517b6
mov ecx, ebx
sub ecx, eax
mov dword [ebp + 0x48], ecx
cmp dword [ebp + 0x20], 0
jne 0x45185c
cmp dword [ebp + 0x34], 0
jne 0x4517e3
mov ebx, edx
jmp 0x451d6f
cmp dword [ebp + 0x34], 1
push dword [ebp + 4]
mov esi, dword [ebp + 0x4c]
mov byte [ebx], 0
push edi
jg 0x451818
push 1
push esi
call fcn.0044fe52
push dword [ebp + 0x44]
inc esi
push dword [ebp + 0x4c]
push esi
call fcn.00454a70
mov al, byte [ebp + 0x3c]
mov ecx, dword [ebp + 0x4c]
add esp, 0x1c
inc ebx
add al, 0x61
mov byte [ecx], al
jmp 0x45184b
push 4
push esi
call fcn.0044fe52
push dword [ebp + 0x44]
lea eax, [esi + 4]
push esi
push eax
call fcn.00454a70
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 0x4518f9
cmp dword [ebp + 0x20], 1
jle 0x4518ec
mov eax, dword [ebp + 0x7c]
test eax, eax
je 0x451879
mov ecx, dword [ebp + 0x20]
dec ecx
imul ecx, dword [ebp - 4]
add dword [eax], ecx
jmp 0x4518ec
cmp dword [ebp - 0x18], 0
je 0x45188b
cmp dword [ebp + 0x18], 0
jge 0x45188b
mov eax, dword [ebp + 0x38]
mov dword [ebp + 0x18], eax
cmp dword [ebp + 0x20], 1
jle 0x4518ec
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.00454280
add esp, 0xc
jmp 0x4518d6
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 0x4518b2
mov esi, dword [ebp + 0x30]
add ebx, dword [ebp + 0x44]
dec dword [ebp + 0x2c]
mov dword [ebp + 4], esi
jne 0x45189b
mov esi, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x34]
test eax, eax
jle 0x4518fb
sub eax, dword [ebp + 0x20]
mov dword [ebp + 0x34], eax
test eax, eax
jl 0x451a20
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x45191f
test eax, eax
jle 0x45191f
mov edx, dword [ebp - 4]
add edx, 7
imul edx, eax
sub edx, 6
add dword [ecx], edx
jmp 0x4519d8
dec eax
mov dword [ebp + 0x48], eax
js 0x4519d8
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 0x451963
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.00454280
mov eax, dword [ebp + 4]
add esp, 0xc
cmp eax, esi
jae 0x4519c6
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 0x451995
mov esi, dword [ebp + 0x2c]
add ebx, dword [ebp + 0x44]
dec dword [ebp + 0x48]
mov dword [ebp + 4], esi
jns 0x451931
mov esi, dword [ebp + 0x1c]
cmp dword [ebp + 0x24], 0
je 0x451c7f
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 0x4519e5
jmp 0x451c7c
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 0x451c7c
cmp byte [edi], 0x57
je 0x451c7c
mov dword [ebp + 0x30], edi
push 0
push esi
push dword [ebp + 0x30]
call fcn.0044fc9c
add esp, 0xc
test eax, eax
jne 0x451a7a
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 0x451a4e
jmp 0x451c7c
add byte [edi], 3
jmp 0x451c7c
cmp dword [ebp + 0x34], 0
je 0x4517dc
mov ecx, dword [ebp + 0x34]
xor esi, esi
inc esi
cmp ecx, esi
je 0x451a99
mov dword [edi + 0x44], esi
cmp dword [ebp + 0x20], 0
jne 0x451aab
cmp ecx, 0xffffffff
jne 0x451abd
add al, 0x40
jmp 0x451c79
cmp dword [ebp + 0x20], 1
jne 0x451ac8
cmp ecx, 0xffffffff
jne 0x451ac8
add al, 0x42
jmp 0x451c79
cmp ecx, esi
jne 0x451ac8
add al, 0x44
jmp 0x451c79
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 0x451ae8
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 0x451c7c
cmp dword [ebp + 0x20], 1
movzx esi, byte [ebx - 1]
mov dword [ebp + 0x48], esi
jle 0x451b11
mov eax, dword [edi + 0x40]
or eax, esi
or eax, dword [ebp - 0x10]
mov dword [ebp + 0x18], eax
cmp dword [ebp + 0x40], 0
jne 0x451b45
cmp dword [ebp + 0x34], 0
jge 0x451b45
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.0044fef2
add esp, 0x10
test eax, eax
je 0x451b45
and dword [ebp + 0x3c], 0
mov dword [ebp + 0x40], 1
mov eax, dword [ebp + 0x4c]
mov cl, byte [eax]
cmp cl, 0xe
je 0x451b5e
cmp cl, 0xd
je 0x451b5e
or dword [ebp + 0x24], 0xffffffff
or dword [ebp + 0x44], 0xffffffff
jmp 0x451b6c
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 0x451d6f
mov edx, dword [ebp + 0x34]
xor eax, eax
inc eax
cmp edx, eax
je 0x451b87
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 0x451bbc
cmp edx, 0xffffffff
jne 0x451ba1
add al, 0x19
jmp 0x451bc9
cmp edx, 1
mov ebx, dword [ebp + 0x4c]
je 0x451c5e
add al, 0x1f
mov byte [ebx], al
inc ebx
mov eax, edx
mov byte [ebx + 1], dl
jmp 0x451c6f
cmp dword [ebp + 0x20], 1
jne 0x451bfb
cmp edx, 0xffffffff
jne 0x451bd4
add al, 0x1b
mov ebx, dword [ebp + 0x4c]
mov byte [ebx], al
inc ebx
jmp 0x451c76
cmp edx, 1
mov ebx, esi
je 0x451d6f
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 0x451c74
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 0x451c32
mov cl, byte [ebp + 0x48]
mov byte [ebx], cl
mov ecx, dword [ebp + 0x44]
inc ebx
test ecx, ecx
jl 0x451c2e
mov byte [ebx], cl
mov cl, byte [ebp + 0x24]
inc ebx
mov byte [ebx], cl
inc ebx
add al, 0x19
jmp 0x451bcc
mov ecx, dword [ebp + 0x20]
cmp dword [ebp + 0x34], ecx
je 0x451c76
mov cl, byte [ebp + 0x48]
mov byte [ebx], cl
mov ecx, dword [ebp + 0x44]
inc ebx
test ecx, ecx
jl 0x451c50
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 0x451c65
add al, 0x1d
jmp 0x451bcc
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 0x451d6f
mov al, byte [esi]
cmp al, 0x21
je 0x451c97
cmp al, 0x3b
je 0x451c97
cmp al, 0x2e
jne 0x451ca6
movzx eax, al
movzx eax, byte [eax + 0x45e4e0]
add esi, eax
mov dword [ebp + 0x1c], esi
mov eax, ebx
sub eax, esi
test eax, eax
mov dword [ebp + 0x2c], eax
jle 0x451d6f
movzx eax, byte [esi]
cmp eax, 0x2a
jg 0x451d05
je 0x451d00
sub eax, 0x19
je 0x451cfb
push 2
pop ecx
sub eax, ecx
je 0x451cf6
sub eax, ecx
je 0x451cf1
sub eax, ecx
je 0x451cec
sub eax, 7
je 0x451ce4
sub eax, ecx
jne 0x451d1b
mov byte [esi], 0x30
jmp 0x451d6f
mov byte [esi], 0x2f
jmp 0x451d6f
mov byte [esi], 0x25
jmp 0x451d6f
mov byte [esi], 0x24
jmp 0x451d6f
mov byte [esi], 0x23
jmp 0x451d6f
mov byte [esi], 0x22
jmp 0x451d6f
mov byte [esi], 0x31
jmp 0x451d6f
sub eax, 0x2c
je 0x451d6c
sub eax, 7
je 0x451d67
dec eax
dec eax
je 0x451d62
dec eax
dec eax
je 0x451d5d
dec eax
dec eax
je 0x451d58
push dword [ebp + 0x2c]
push esi
add esi, 3
push esi
call fcn.00454a70
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 0x451d6f
mov byte [esi], 0x3f
jmp 0x451d6f
mov byte [esi], 0x3e
jmp 0x451d6f
mov byte [esi], 0x3d
jmp 0x451d6f
mov byte [esi], 0x3c
jmp 0x451d6f
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 0x45031b
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x34
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
inc dword [ebp + 0x50]
mov dword [eax], 0x1c
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
dec ecx
mov dword [ebp + 0x50], ecx
mov dword [eax], 0x1a
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
dec esi
mov dword [eax], 0xc
mov dword [ebp + 0x50], esi
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x31
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
inc esi
mov dword [ebp + 0x50], esi
mov dword [eax], 0x18
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x36
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1b
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xe
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2a
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xf
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x28
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2d
jmp 0x451ec5
mov ecx, dword [ebp + 0x50]
xor eax, eax
cmp byte [ecx + 1], 0x3a
setne al
dec eax
and eax, 0xffffffee
add eax, 0x1f
jmp 0x45074a
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1f
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1e
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 7
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 8
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 6
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 9
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xb
jmp 0x451ec5
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x37
jmp 0x451ec5
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