Function at 0x5a4aaa
Capabilities:
Encode data using base64
Parse credit card information

Disassembly:
push ebp
lea ebp, [esp - 0x54]
sub esp, 0xb0
mov eax, dword [0x67e540]
mov dword [ebp + 0x50], eax
mov eax, dword [ebp + 0x5c]
mov edx, dword [eax]
mov eax, dword [ebp + 0x64]
push ebx
mov ebx, dword [eax]
mov eax, dword [ebp + 0x68]
push esi
mov esi, dword [eax]
xor ecx, ecx
inc ecx
mov eax, edx
shr eax, 0xb
and eax, ecx
mov dword [ebp - 0x24], eax
mov eax, edx
shr eax, 9
and eax, ecx
mov dword [ebp - 0x54], eax
xor eax, ecx
push edi
mov dword [ebp - 0x58], eax
xor edi, edi
push 0xfffffffffffffffe
pop eax
mov dword [ebp + 0xc], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 8], eax
mov eax, edx
and eax, ecx
shl eax, 8
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x48], edi
mov dword [ebp + 0x18], ebx
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x50], edi
mov dword [ebp + 0x10], edi
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x40], eax
cmp dword [ebp - 0x3c], edi
mov dword [ebp + 0x1c], esi
movzx eax, byte [esi]
mov dword [ebp + 4], edi
mov dword [ebp + 0x14], eax
je 0x5a4b93
cmp eax, edi
je 0x5a4b93
cmp eax, 0x5c
jne 0x5a4b51
lea ecx, [esi + 1]
cmp byte [ecx], 0x45
jne 0x5a4b51
mov dword [ebp - 0x3c], edi
mov dword [ebp + 0x1c], ecx
jmp 0x5a6236
cmp dword [ebp - 0x34], edi
je 0x5a4b6c
push dword [ebp + 0x7c]
mov ecx, dword [ebp - 0x34]
mov eax, esi
call fcn.005a4a8d
mov eax, dword [ebp + 0x14]
add esp, 4
mov dword [ebp - 0x34], edi
test byte [ebp - 0x13], 0x40
je 0x5a537e
mov esi, dword [ebp + 0x7c]
mov ecx, dword [ebp + 0x1c]
mov eax, ebx
mov dword [ebp - 0x34], ebx
call fcn.005a4a69
mov dword [ebp + 0x18], eax
mov ebx, eax
mov eax, dword [ebp + 0x14]
jmp 0x5a537e
cmp eax, 0x2a
je 0x5a4bfd
cmp eax, 0x2b
je 0x5a4bfd
cmp eax, 0x3f
je 0x5a4bfd
cmp eax, 0x7b
jne 0x5a4bb6
lea eax, [esi + 1]
call fcn.005a4413
test eax, eax
mov eax, dword [ebp + 0x14]
jne 0x5a4bfd
cmp dword [ebp - 0x34], edi
mov dword [ebp - 0x18], edi
je 0x5a4bde
mov ecx, dword [ebp - 0x48]
dec dword [ebp - 0x48]
test ecx, ecx
jg 0x5a4bde
push dword [ebp + 0x7c]
mov ecx, dword [ebp - 0x34]
mov eax, esi
call fcn.005a4a8d
mov eax, dword [ebp + 0x14]
add esp, 4
mov dword [ebp - 0x34], edi
test byte [ebp - 0x14], 8
je 0x5a4c41
cmp eax, 0x100
jge 0x5a4c06
mov ecx, dword [ebp + 0x7c]
mov ecx, dword [ecx + 0xc]
test byte [eax + ecx], 1
jne 0x5a6236
jmp 0x5a4c1a
mov dword [ebp - 0x18], 1
jmp 0x5a4bde
push dword [ebp + 0x14]
call fcn.0059f59f
cmp al, 1
pop ecx
je 0x5a6236
mov eax, dword [ebp + 0x14]
xor edi, edi
cmp eax, 0x23
jne 0x5a4c43
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
movzx eax, byte [eax]
cmp eax, edi
mov dword [ebp + 0x14], eax
je 0x5a4c43
push eax
call fcn.0059f57b
test al, al
pop ecx
je 0x5a4c21
jmp 0x5a6236
xor edi, edi
test byte [ebp - 0x13], 0x40
mov esi, dword [ebp + 0x7c]
je 0x5a4c66
cmp dword [ebp - 0x18], edi
jne 0x5a4c66
mov ecx, dword [ebp + 0x1c]
mov eax, ebx
mov dword [ebp - 0x34], ebx
call fcn.005a4a69
mov dword [ebp + 0x18], eax
mov ebx, eax
mov eax, dword [ebp + 0x14]
cmp eax, 0x2e
jg 0x5a5331
je 0x5a5310
mov ecx, eax
sub ecx, edi
je 0x5a535c
sub ecx, 0x24
je 0x5a5305
sub ecx, 4
je 0x5a4cb9
dec ecx
je 0x5a535c
dec ecx
je 0x5a4cb0
dec ecx
jne 0x5a537e
or edx, 0xffffffff
mov dword [ebp - 0x10], 1
mov dword [ebp - 0x1c], edx
jmp 0x5a5c6b
or dword [ebp - 0x1c], 0xffffffff
jmp 0x5a5c65
inc dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x1c]
cmp byte [ecx], 0x3f
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x18], eax
mov dword [ebp + 8], edi
jne 0x5a51f0
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
mov cl, byte [eax]
movzx eax, cl
cmp eax, 0x3c
jg 0x5a4e1e
je 0x5a4dca
cmp eax, 0x21
je 0x5a4dc1
cmp eax, 0x23
je 0x5a4db1
cmp eax, 0x28
je 0x5a4d2c
cmp eax, 0x2f
jle 0x5a4e48
cmp eax, 0x39
jle 0x5a4f0f
cmp eax, 0x3a
jne 0x5a4e48
mov dword [ebp - 0x28], 0x50
inc dword [ebp + 0x1c]
jmp 0x5a5212
mov eax, dword [ebp + 0x1c]
inc eax
mov cl, byte [eax]
cmp cl, 0x52
mov dword [ebp - 0x28], 0x4b
jne 0x5a4d58
push 3
pop eax
mov byte [ebx + 3], 0x4c
mov byte [ebx + 4], 0xff
mov byte [ebx + 5], 0xff
add dword [ebp + 0x1c], eax
mov dword [ebp + 8], eax
jmp 0x5a5212
movzx ecx, cl
cmp byte [ecx + 0x62b620], 0
je 0x5a5212
mov edx, eax
mov dword [ebp + 0x1c], edx
movzx eax, byte [edx]
sub eax, 0x30
jmp 0x5a4d7f
movzx ecx, cl
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
inc edx
mov dword [ebp + 0x1c], edx
mov cl, byte [edx]
cmp cl, 0x29
jne 0x5a4d75
cmp eax, edi
je 0x5a6241
inc edx
mov ecx, eax
mov dword [ebp + 0x1c], edx
sar ecx, 8
mov byte [ebx + 3], 0x4c
mov byte [ebx + 4], cl
mov byte [ebx + 5], al
mov dword [ebp + 8], 3
jmp 0x5a5212
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
cmp byte [eax], 0x29
jne 0x5a4db1
jmp 0x5a6236
mov dword [ebp - 0x28], 0x46
jmp 0x5a4de5
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
mov al, byte [eax]
cmp al, 0x21
je 0x5a4e0f
cmp al, 0x3d
jne 0x5a5208
mov dword [ebp - 0x28], 0x47
inc dword [ebp + 0x1c]
mov dword [ebp + 0x10], edi
mov eax, dword [ebp - 0x28]
cmp eax, 0x47
mov byte [ebx], al
mov edi, dword [esi + 0x2c]
mov dword [ebp - 0x38], ebx
je 0x5a521a
cmp eax, 0x48
je 0x5a521a
xor eax, eax
jmp 0x5a521d
mov dword [ebp - 0x28], 0x48
inc dword [ebp + 0x1c]
jmp 0x5a5208
sub eax, 0x3d
je 0x5a51e4
dec eax
je 0x5a51d8
sub eax, 5
je 0x5a5164
sub eax, 0xd
je 0x5a4f31
dec eax
dec eax
je 0x5a4f0c
mov dword [ebp - 0x18], edi
mov dword [ebp + 4], edi
lea eax, [ebp + 4]
jmp 0x5a4ea8
cmp cl, 0x3a
je 0x5a4ead
inc dword [ebp + 0x1c]
movzx ecx, cl
cmp ecx, 0x2d
je 0x5a4ea0
cmp ecx, 0x55
je 0x5a4e9a
cmp ecx, 0x58
je 0x5a4e95
cmp ecx, 0x69
je 0x5a4e90
cmp ecx, 0x6d
je 0x5a4e8b
cmp ecx, 0x73
je 0x5a4e86
cmp ecx, 0x78
jne 0x5a4ea3
or dword [eax], 8
jmp 0x5a4ea3
or dword [eax], 4
jmp 0x5a4ea3
or dword [eax], 2
jmp 0x5a4ea3
or dword [eax], 1
jmp 0x5a4ea3
or dword [eax], 0x40
jmp 0x5a4ea3
or byte [eax + 1], 2
jmp 0x5a4ea3
lea eax, [ebp - 0x18]
mov ecx, dword [ebp + 0x1c]
mov cl, byte [ecx]
cmp cl, 0x29
jne 0x5a4e53
mov eax, dword [ebp + 4]
mov ecx, dword [ebp - 0x18]
or eax, dword [ebp - 0x14]
not ecx
and eax, ecx
mov ecx, dword [ebp + 0x1c]
cmp byte [ecx], 0x29
mov dword [ebp - 0x18], eax
jne 0x5a4d1d
mov ecx, eax
xor ecx, dword [ebp - 0x14]
test cl, 7
je 0x5a4ee2
mov byte [ebx], 0x12
mov cl, al
inc ebx
and cl, 7
mov byte [ebx], cl
inc ebx
mov dword [ebp + 0x18], ebx
mov ecx, dword [ebp + 0x5c]
mov dword [ecx], eax
mov ecx, eax
shr ecx, 9
and ecx, 1
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x54], ecx
xor ecx, 1
and eax, 1
shl eax, 8
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x40], eax
mov dword [ebp + 0x10], edi
jmp 0x5a6236
inc dword [ebp + 0x1c]
xor ecx, ecx
jmp 0x5a4f1d
inc dword [ebp + 0x1c]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov eax, dword [ebp + 0x1c]
movzx eax, byte [eax]
test byte [eax + 0x62b620], 4
jne 0x5a4f13
jmp 0x5a50ba
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
mov al, byte [eax]
cmp al, 0x3c
jne 0x5a503e
mov eax, dword [esi + 0x18]
inc dword [ebp + 0x1c]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp + 4], eax
mov eax, dword [ebp + 0x1c]
mov al, byte [eax]
inc dword [ebp + 0x1c]
cmp al, 0x3e
jne 0x5a4f50
mov eax, dword [ebp + 0x1c]
sub eax, dword [ebp + 4]
mov dword [ebp], edi
dec eax
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x2c], eax
cmp eax, edi
mov eax, dword [ebp + 0xc]
jle 0x5a4fda
mov ecx, dword [ebp - 0xc]
mov esi, dword [ebp + 4]
lea edi, [eax + 2]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x5a4f8a
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
jne 0x5a4fa0
mov ecx, dword [ebp - 0xc]
cmp byte [ecx + eax + 2], dl
je 0x5a624f
or edx, 0xffffffff
test edx, edx
jl 0x5a4fb8
mov ecx, dword [ebp + 0x7c]
add eax, dword [ecx + 0x20]
inc dword [ebp]
mov edx, dword [ebp]
cmp edx, dword [ecx + 0x1c]
mov dword [ebp + 0xc], eax
jl 0x5a4f76
jmp 0x5a4fda
mov eax, dword [ebp + 0x7c]
mov ecx, dword [eax + 0x20]
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp]
imul eax, ecx
push eax
mov eax, dword [ebp + 0xc]
push eax
add eax, ecx
push eax
call fcn.005efe20
mov eax, dword [ebp + 0xc]
add esp, 0xc
mov esi, dword [ebp + 0x60]
mov ecx, dword [esi]
inc ecx
sar ecx, 8
mov byte [eax], cl
mov cl, byte [esi]
mov esi, dword [ebp + 4]
inc cl
mov byte [eax + 1], cl
mov ecx, dword [ebp - 0xc]
mov edx, ecx
shr ecx, 2
lea edi, [eax + 2]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, edx
mov byte [ecx + eax + 2], 0
mov eax, dword [ebp + 0x7c]
inc dword [eax + 0x1c]
mov esi, eax
xor edi, edi
mov ecx, dword [ebp + 0x60]
inc dword [ecx]
mov eax, dword [ecx]
cmp eax, 0x64
jle 0x5a5202
mov byte [ebx + 3], 0x4f
mov eax, dword [ecx]
sar eax, 8
mov byte [ebx + 4], al
mov al, byte [ecx]
mov dword [ebp - 0x28], 0xb5
jmp 0x5a4da2
cmp al, 0x3d
je 0x5a504a
cmp al, 0x3e
jne 0x5a5208
inc dword [ebp + 0x1c]
mov esi, dword [esi + 0x18]
movzx eax, al
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp + 4], eax
jmp 0x5a5062
inc eax
mov dword [ebp + 0x1c], eax
cmp byte [eax], 0x29
jne 0x5a505e
mov edi, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x7c]
sub edi, dword [ebp + 4]
and dword [ebp], 0
cmp dword [eax + 0x1c], 0
jle 0x5a509f
push edi
lea eax, [esi + 2]
push eax
push dword [ebp + 4]
call fcn.005efcb0
add esp, 0xc
test eax, eax
je 0x5a509f
mov eax, dword [ebp + 0x7c]
add esi, dword [eax + 0x20]
inc dword [ebp]
mov ecx, dword [ebp]
cmp ecx, dword [eax + 0x1c]
jl 0x5a507a
mov eax, dword [ebp]
mov edi, dword [ebp + 0x7c]
cmp eax, dword [edi + 0x1c]
jge 0x5a625d
cmp dword [ebp - 0x2c], 0x3e
movzx ecx, byte [esi + 1]
mov ch, byte [esi]
jne 0x5a512d
test ecx, ecx
mov eax, dword [ebp + 0x7c]
mov byte [ebx], 0
mov eax, dword [eax + 0x10]
mov dword [ebp + 0x10], ebx
jne 0x5a50cf
mov dword [ebp], eax
jmp 0x5a50dd
push ecx
push dword [ebp - 0x24]
call fcn.005a476c
pop ecx
pop ecx
mov dword [ebp], eax
test eax, eax
je 0x5a625d
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x5a510e
push dword [ebp - 0x24]
mov eax, dword [ebp + 0x78]
push ebx
push dword [ebp]
call fcn.005a4984
add esp, 0xc
test eax, eax
jne 0x5a6268
mov eax, dword [ebp]
mov esi, dword [ebp + 0x7c]
mov byte [ebx], 0x3f
mov ecx, eax
sub ecx, dword [esi + 0x10]
sar ecx, 8
mov byte [ebx + 1], cl
sub al, byte [esi + 0x10]
add ebx, 3
mov byte [ebx - 1], al
jmp 0x5a548d
mov byte [ebx], 0x3e
mov dword [ebp + 0x10], 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
mov dword [ebp + 0x18], ebx
jge 0x5a514d
shl eax, cl
or dword [edi + 0x28], eax
cmp ecx, dword [edi + 0x24]
jle 0x5a6236
mov eax, dword [ebp + 0x7c]
mov dword [eax + 0x24], ecx
jmp 0x5a6236
mov byte [ebx], 0x40
mov dword [ebp - 0x34], ebx
inc ebx
xor ecx, ecx
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
movzx eax, byte [eax]
test byte [eax + 0x62b620], 4
mov dword [ebp - 0x48], 1
je 0x5a51ab
inc dword [ebp + 0x1c]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov eax, dword [ebp + 0x1c]
movzx eax, byte [eax]
test byte [eax + 0x62b620], 4
jne 0x5a5186
cmp ecx, 0xff
jg 0x5a6273
mov byte [ebx], cl
mov eax, dword [ebp + 0x1c]
sub eax, dword [esi + 0x14]
inc ebx
inc eax
sar eax, 8
mov byte [ebx], al
mov al, byte [ebp + 0x1c]
sub al, byte [esi + 0x14]
mov byte [ebx + 2], 0
inc al
mov byte [ebx + 1], al
mov byte [ebx + 3], 0
add ebx, 4
mov dword [ebp + 0x18], ebx
jmp 0x5a4f04
mov dword [ebp - 0x28], 0x4a
jmp 0x5a4d24
mov dword [ebp - 0x28], 0x45
jmp 0x5a4e16
test ah, 0x10
je 0x5a5014
mov dword [ebp - 0x28], 0x50
jmp 0x5a5212
add eax, 0x50
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0x4a
jl 0x5a4de8
mov dword [ebp + 0x10], ebx
jmp 0x5a4deb
xor eax, eax
inc eax
push esi
push dword [ebp + 0x78]
lea ecx, [ebp - 0x4c]
push ecx
lea ecx, [ebp - 0x5c]
push ecx
push dword [ebp + 8]
push eax
push dword [ebp + 0x6c]
lea eax, [ebp + 0x1c]
push eax
lea eax, [ebp - 0x38]
push eax
push dword [ebp + 0x60]
mov eax, dword [ebp - 0x14]
and eax, 7
push eax
push dword [ebp - 0x18]
call fcn.005a62fd
add esp, 0x30
test eax, eax
je 0x5a62e3
mov esi, dword [ebp - 0x28]
cmp esi, 0x4b
jne 0x5a528a
xor eax, eax
xor ecx, ecx
mov ch, byte [ebx + 1]
inc eax
mov cl, byte [ebx + 2]
add ebx, ecx
cmp byte [ebx], 0x42
jne 0x5a525f
cmp eax, 2
jg 0x5a627e
cmp eax, 1
jne 0x5a528a
or eax, 0xffffffff
mov edx, eax
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x5c], eax
jmp 0x5a5290
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x20]
and dword [ebp - 0x50], 0
cmp esi, 0x50
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x30], ecx
jge 0x5a52b6
cmp esi, 0x4a
je 0x5a52b6
cmp esi, 0x4b
je 0x5a52b6
cmp esi, 0x45
jne 0x5a52eb
jmp 0x5a52e4
cmp ecx, 0xfffffffe
jne 0x5a52d5
test eax, eax
jl 0x5a52cb
mov dword [ebp - 8], eax
mov dword [ebp - 0x50], 1
jmp 0x5a52cf
or dword [ebp - 8], 0xffffffff
or dword [ebp - 0x30], 0xffffffff
jmp 0x5a52e4
test eax, eax
jl 0x5a52e4
test edx, edx
jge 0x5a52e8
or eax, edi
mov edx, eax
mov dword [ebp - 0x4c], edx
test edx, edx
jl 0x5a52eb
mov dword [ebp - 0x20], edx
mov eax, dword [ebp - 0x38]
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 0x1c]
cmp byte [eax], 0x29
jne 0x5a6289
mov ebx, dword [ebp + 0x18]
jmp 0x5a6236
mov dword [ebp + 0x10], edi
mov byte [ebx], 0x14
jmp 0x5a54a9
cmp dword [ebp - 8], 0xfffffffe
jne 0x5a531a
or dword [ebp - 8], 0xffffffff
mov eax, dword [ebp - 8]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0xc], eax
mov dword [ebp + 0x10], ebx
mov byte [ebx], 0xb
jmp 0x5a54a9
mov ecx, eax
sub ecx, 0x3f
je 0x5a5c5e
sub ecx, 0x1c
je 0x5a54d1
dec ecx
je 0x5a53fc
dec ecx
dec ecx
je 0x5a53e1
sub ecx, 0x1d
je 0x5a5379
dec ecx
jne 0x5a537e
mov eax, dword [ebp + 0x70]
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [ebp + 0x74]
mov ecx, dword [ebp - 0x20]
mov dword [eax], ecx
mov eax, dword [ebp + 0x64]
mov dword [eax], ebx
xor eax, eax
inc eax
jmp 0x5a62e5
cmp dword [ebp - 0x18], edi
jne 0x5a53b7
xor esi, esi
inc esi
cmp dword [ebp - 0x24], 0
mov byte [ebp + 0x28], al
je 0x5a5afd
and ax, 0xc0
cmp al, 0xc0
jne 0x5a5afd
mov ecx, dword [ebp + 0x1c]
jmp 0x5a53a9
mov dword [ebp + 0x1c], ecx
mov al, byte [ecx]
mov byte [ebp + esi + 0x28], al
inc esi
inc ecx
mov al, byte [ecx]
and al, 0xc0
cmp al, 0x80
je 0x5a539f
jmp 0x5a5afd
mov esi, dword [ebp + 0x6c]
push esi
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp + 0x1c]
inc eax
call fcn.005a4475
add esp, 0xc
cmp dword [esi], edi
mov dword [ebp + 0x1c], eax
jne 0x5a62e3
xor edi, edi
jmp 0x5a5c68
test byte [ebp - 0x14], 2
je 0x5a53f1
cmp dword [ebp - 8], 0xfffffffe
jne 0x5a53f1
or dword [ebp - 8], 0xffffffff
mov dword [ebp + 0x10], edi
mov byte [ebx], 0x13
jmp 0x5a54a9
mov eax, dword [ebp + 0x1c]
push edi
push dword [ebp - 0x14]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 0x60]
push dword [eax]
lea eax, [ebp + 0x1c]
push dword [ebp + 0x6c]
push eax
call fcn.005a420c
add esp, 0x14
cmp eax, edi
jge 0x5a54ac
mov ecx, eax
neg ecx
cmp ecx, 0x13
jne 0x5a5450
mov eax, dword [ebp + 0x1c]
cmp byte [eax + 1], 0x5c
jne 0x5a5444
add eax, 2
cmp byte [eax], 0x45
jne 0x5a5444
mov dword [ebp + 0x1c], eax
jmp 0x5a6236
mov dword [ebp - 0x3c], 1
jmp 0x5a6236
cmp dword [ebp - 8], 0xfffffffe
jne 0x5a5464
cmp ecx, 4
jle 0x5a5464
cmp ecx, 0x10
jge 0x5a5464
or dword [ebp - 8], 0xffffffff
cmp ecx, 0x14
mov edx, dword [ebp - 8]
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x20]
mov dword [ebp + 0xc], edx
jl 0x5a5495
push 0xffffffffffffffec
pop ecx
sub ecx, eax
mov byte [ebx], 0x3e
mov dword [ebp + 0x10], ebx
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
inc ebx
inc ebx
mov dword [ebp + 0x18], ebx
jmp 0x5a6236
cmp ecx, 4
jle 0x5a54a2
cmp ecx, 0x10
mov dword [ebp + 0x10], ebx
jl 0x5a54a5
mov dword [ebp + 0x10], edi
neg al
mov byte [ebx], al
inc ebx
jmp 0x5a548d
cmp dword [ebp - 0x24], edi
je 0x5a5af7
cmp eax, 0x7f
jle 0x5a5af7
lea ecx, [ebp + 0x28]
push ecx
push eax
call fcn.005cfef5
pop ecx
pop ecx
mov esi, eax
jmp 0x5a5afd
mov eax, dword [ebp + 0x1c]
mov al, byte [eax + 1]
cmp al, 0x3a
mov dword [ebp + 0x10], ebx
je 0x5a54e6
cmp al, 0x2e
je 0x5a54e6
cmp al, 0x3d
jne 0x5a54fd
lea eax, [ebp - 0x44]
push eax
mov eax, dword [ebp + 0x1c]
mov ecx, esi
call fcn.005a49b6
test eax, eax
pop ecx
jne 0x5a6294
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
movzx esi, byte [eax]
cmp esi, 0x5e
jne 0x5a551d
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
movzx esi, byte [eax]
mov dword [ebp], 1
jmp 0x5a5520
mov dword [ebp], edi
and dword [ebp + 0x18], 0
or dword [ebp - 0xc], 0xffffffff
and dword [ebp - 0x18], 0
lea eax, [ebx + 0x24]
push 8
mov dword [ebp + 8], eax
xor eax, eax
cmp esi, 0x5d
pop ecx
lea edi, [ebp + 0x30]
rep stosd dword es:[edi], eax
jne 0x5a5550
and dword [ebp - 0xc], eax
mov dword [ebp + 0x18], 1
jmp 0x5a5a91
cmp dword [ebp - 0x24], 0
je 0x5a55ac
cmp esi, 0x7f
jle 0x5a55ac
mov eax, esi
and ax, 0xc0
cmp al, 0xc0
jne 0x5a55ac
mov eax, esi
and eax, 0x3f
movzx edi, byte [eax + 0x63f258]
mov eax, dword [edi*4 + 0x63f240]
and eax, esi
lea ecx, [edi + edi*2]
shl ecx, 1
shl eax, cl
mov esi, eax
xor eax, eax
inc eax
cmp edi, eax
mov dword [ebp + 0xc], eax
jl 0x5a55a9
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x1c]
movzx eax, byte [edx + eax]
sub ecx, 6
and eax, 0x3f
shl eax, cl
or esi, eax
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], edi
jle 0x5a558d
add dword [ebp + 0x1c], edi
cmp dword [ebp - 0x3c], 0
je 0x5a55d1
cmp esi, 0x5c
jne 0x5a59ee
mov eax, dword [ebp + 0x1c]
inc eax
cmp byte [eax], 0x45
jne 0x5a59ee
and dword [ebp - 0x3c], 0
jmp 0x5a58dd
cmp esi, 0x5b
jne 0x5a5706
mov eax, dword [ebp + 0x1c]
mov al, byte [eax + 1]
cmp al, 0x3a
je 0x5a55f0
cmp al, 0x2e
je 0x5a55f0
cmp al, 0x3d
jne 0x5a5738
mov edi, dword [ebp + 0x7c]
lea eax, [ebp - 0x44]
push eax
mov eax, dword [ebp + 0x1c]
mov ecx, edi
call fcn.005a49b6
test eax, eax
pop ecx
je 0x5a5738
mov eax, dword [ebp + 0x1c]
and dword [ebp - 0x30], 0
cmp byte [eax + 1], 0x3a
mov edi, dword [edi + 8]
mov dword [ebp + 0x14], edi
jne 0x5a62ae
inc eax
inc eax
mov dword [ebp + 0x1c], eax
cmp byte [eax], 0x5e
jne 0x5a5636
inc eax
mov dword [ebp - 0x30], 1
mov dword [ebp + 0x1c], eax
mov ecx, dword [ebp - 0x44]
sub ecx, eax
push ecx
push eax
call fcn.005a49ec
test eax, eax
pop ecx
pop ecx
jl 0x5a62b9
test byte [ebp - 0x14], 1
je 0x5a5659
cmp eax, 2
jg 0x5a5659
xor eax, eax
and dword [ebp + 0xc], 0
lea eax, [eax + eax*2]
mov dword [ebp - 0x2c], eax
jmp 0x5a5668
mov edi, dword [ebp + 0x14]
push 5
push str.blank
push dword [ebp + 0x1c]
call fcn.005efcb0
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x2c]
add esp, 0xc
neg eax
sbb eax, eax
add ecx, edx
mov ecx, dword [ecx*4 + 0x62b578]
xor esi, esi
inc eax
cmp ecx, esi
jl 0x5a56f3
cmp dword [ebp - 0x30], esi
je 0x5a56c9
add edi, ecx
cmp edx, esi
jne 0x5a56b0
mov cl, byte [edi + esi]
not cl
or byte [ebp + esi + 0x30], cl
inc esi
cmp esi, 0x20
jl 0x5a569f
jmp 0x5a56bf
mov cl, byte [edi + esi]
not cl
and byte [ebp + esi + 0x30], cl
inc esi
cmp esi, 0x20
jl 0x5a56b0
test eax, eax
je 0x5a56e6
or byte [ebp + 0x31], 0x3c
jmp 0x5a56e6
mov edx, dword [ebp + 0x14]
xor esi, esi
lea edi, [ecx + edx]
mov cl, byte [edi + esi]
or byte [ebp + esi + 0x30], cl
inc esi
cmp esi, 0x20
jl 0x5a56d1
test eax, eax
je 0x5a56e6
and byte [ebp + 0x31], 0xc3
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 3
jl 0x5a5665
mov eax, dword [ebp - 0x44]
inc eax
mov dword [ebp + 0x1c], eax
mov dword [ebp + 0x18], 0xa
jmp 0x5a5a6b
cmp esi, 0x5c
jne 0x5a5738
mov eax, dword [ebp + 0x60]
xor edi, edi
inc edi
push edi
push dword [ebp - 0x14]
push dword [eax]
lea eax, [ebp + 0x1c]
push dword [ebp + 0x6c]
push eax
call fcn.005a420c
mov esi, eax
mov ecx, esi
neg ecx
add esp, 0x14
cmp ecx, 4
jne 0x5a58bb
push 8
pop esi
mov eax, dword [ebp + 0x1c]
cmp byte [eax + 1], 0x2d
jne 0x5a59ee
add eax, 2
cmp byte [eax], 0x5d
je 0x5a59ee
cmp dword [ebp - 0x24], 0
mov dword [ebp + 0x1c], eax
movzx eax, byte [eax]
mov dword [ebp + 0x14], eax
je 0x5a57b3
and ax, 0xc0
cmp al, 0xc0
jne 0x5a57b3
mov eax, dword [ebp + 0x14]
and eax, 0x3f
movzx edi, byte [eax + 0x63f258]
mov eax, dword [edi*4 + 0x63f240]
and eax, dword [ebp + 0x14]
lea ecx, [edi + edi*2]
shl ecx, 1
shl eax, cl
mov dword [ebp + 0x14], eax
xor eax, eax
inc eax
cmp edi, eax
mov dword [ebp + 0xc], eax
jl 0x5a57b0
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x1c]
movzx eax, byte [edx + eax]
sub ecx, 6
and eax, 0x3f
shl eax, cl
or dword [ebp + 0x14], eax
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], edi
jle 0x5a5793
add dword [ebp + 0x1c], edi
cmp dword [ebp + 0x14], 0x5c
jne 0x5a57ec
mov eax, dword [ebp + 0x60]
mov edi, dword [ebp + 0x1c]
push 1
push dword [ebp - 0x14]
push dword [eax]
lea eax, [ebp + 0x1c]
push dword [ebp + 0x6c]
push eax
call fcn.005a420c
add esp, 0x14
test eax, eax
mov dword [ebp + 0x14], eax
jge 0x5a57ec
cmp eax, 0xfffffffc
jne 0x5a59d7
mov dword [ebp + 0x14], 8
cmp dword [ebp + 0x14], esi
je 0x5a59ee
cmp dword [ebp - 0x24], 0
je 0x5a5850
cmp dword [ebp + 0x14], 0xff
jg 0x5a5810
test byte [ebp - 0x14], 1
je 0x5a5850
cmp dword [ebp + 0x14], 0x7f
jle 0x5a5850
mov edi, dword [ebp + 8]
mov byte [edi], 2
inc edi
push edi
push esi
mov dword [ebp - 0x18], 1
call fcn.005cfef5
add edi, eax
push edi
push dword [ebp + 0x14]
call fcn.005cfef5
add edi, eax
add esp, 0x10
test byte [ebp - 0x14], 1
mov dword [ebp + 8], edi
je 0x5a5a6b
push 0x7f
pop eax
cmp esi, eax
jg 0x5a5a6b
mov dword [ebp + 0x14], eax
cmp esi, dword [ebp + 0x14]
jg 0x5a5a6b
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x18]
and eax, 1
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x14]
sub eax, esi
lea eax, [ecx + eax + 1]
mov dword [ebp + 0x18], eax
mov eax, esi
cdq
push 8
pop ecx
idiv ecx
mov ecx, esi
and ecx, 7
lea edi, [ebp + eax + 0x30]
mov al, 1
shl al, cl
or byte [edi], al
cmp dword [ebp - 0x2c], 0
je 0x5a58ad
mov eax, dword [ebp + 0x7c]
mov eax, dword [eax + 4]
movzx ecx, byte [eax + esi]
mov eax, ecx
cdq
push 8
pop edi
idiv edi
and ecx, 7
lea edi, [ebp + eax + 0x30]
mov al, 1
shl al, cl
or byte [edi], al
mov dword [ebp - 0xc], esi
inc esi
cmp esi, dword [ebp + 0x14]
jle 0x5a5871
jmp 0x5a5a6b
cmp ecx, 0xf
jne 0x5a58c7
push 0x58
jmp 0x5a5737
cmp ecx, 0x13
jne 0x5a58ed
mov eax, dword [ebp + 0x1c]
cmp byte [eax + 1], 0x5c
jne 0x5a58e5
add eax, 2
cmp byte [eax], 0x45
jne 0x5a58e5
mov dword [ebp + 0x1c], eax
jmp 0x5a5a6b
mov dword [ebp - 0x3c], edi
jmp 0x5a5a6b
test esi, esi
jge 0x5a5738
mov eax, dword [ebp + 0x7c]
add dword [ebp + 0x18], 2
sub ecx, 5
mov eax, dword [eax + 8]
je 0x5a59c3
dec ecx
je 0x5a59ae
dec ecx
je 0x5a5984
dec ecx
je 0x5a5963
dec ecx
je 0x5a594c
dec ecx
je 0x5a5934
test byte [ebp - 0x14], 0x40
jne 0x5a62c4
mov eax, dword [ebp + 0x1c]
movzx esi, byte [eax]
sub dword [ebp + 0x18], 2
jmp 0x5a5738
xor esi, esi
mov cl, byte [eax + esi + 0xa0]
or byte [ebp + esi + 0x30], cl
inc esi
cmp esi, 0x20
jl 0x5a5936
jmp 0x5a5a6b
xor esi, esi
mov cl, byte [eax + esi + 0xa0]
not cl
or byte [ebp + esi + 0x30], cl
inc esi
cmp esi, 0x20
jl 0x5a594e
jmp 0x5a59a2
mov edi, eax
lea eax, [ebp + 0x30]
xor esi, esi
sub edi, eax
lea ecx, [ebp + esi + 0x30]
mov al, byte [edi + ecx]
or byte [ecx], al
inc esi
cmp esi, 0x20
jl 0x5a596c
and byte [ebp + 0x31], 0xf7
jmp 0x5a5a6b
mov edi, eax
lea eax, [ebp + 0x30]
xor esi, esi
sub edi, eax
lea ecx, [ebp + esi + 0x30]
mov al, byte [edi + ecx]
not al
or byte [ecx], al
inc esi
cmp esi, 0x20
jl 0x5a598d
or byte [ebp + 0x31], 8
mov dword [ebp + 4], 1
jmp 0x5a5a6b
xor esi, esi
mov cl, byte [eax + esi + 0x40]
or byte [ebp + esi + 0x30], cl
inc esi
cmp esi, 0x20
jl 0x5a59b0
jmp 0x5a5a6b
xor esi, esi
mov cl, byte [eax + esi + 0x40]
not cl
or byte [ebp + esi + 0x30], cl
inc esi
cmp esi, 0x20
jl 0x5a59c5
jmp 0x5a59a2
cmp eax, 0xfffffff1
jne 0x5a59e8
mov dword [ebp + 0x14], 0x58
jmp 0x5a57ec
add edi, 0xfffffffe
mov dword [ebp + 0x1c], edi
cmp dword [ebp - 0x24], 0
je 0x5a5a27
cmp esi, 0xff
jg 0x5a5a07
test byte [ebp - 0x14], 1
je 0x5a5a27
cmp esi, 0x7f
jle 0x5a5a27
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
push dword [ebp + 8]
mov dword [ebp - 0x18], 1
push esi
mov byte [eax], 1
call fcn.005cfef5
add dword [ebp + 8], eax
pop ecx
pop ecx
jmp 0x5a5a6b
mov eax, esi
cdq
push 8
pop ecx
idiv ecx
mov ecx, esi
and ecx, 7
lea edi, [ebp + eax + 0x30]
mov al, 1
shl al, cl
or byte [edi], al
test byte [ebp - 0x14], 1
je 0x5a5a65
mov eax, dword [ebp + 0x7c]
mov eax, dword [eax + 4]
movzx esi, byte [eax + esi]
mov eax, esi
cdq
push 8
pop ecx
idiv ecx
mov ecx, esi
and ecx, 7
lea edi, [ebp + eax + 0x30]
mov al, 1
shl al, cl
or byte [edi], al
inc dword [ebp + 0x18]
mov dword [ebp - 0xc], esi
inc dword [ebp + 0x1c]
mov eax, dword [ebp + 0x1c]
movzx esi, byte [eax]
cmp esi, 0x5d
jne 0x5a5550
cmp dword [ebp - 0x3c], 0
jne 0x5a5550
cmp dword [ebp + 0x18], 1
jne 0x5a5b9a
cmp dword [ebp - 0x24], 0
je 0x5a5ab4
cmp dword [ebp - 0x18], 0
jne 0x5a5b9a
cmp dword [ebp], 0
je 0x5a5ab4
cmp dword [ebp - 0xc], 0x80
jge 0x5a5b9a
cmp dword [ebp], 0
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0xc], eax
je 0x5a5adc
cmp dword [ebp - 8], 0xfffffffe
jne 0x5a5aca
or dword [ebp - 8], 0xffffffff
mov eax, dword [ebp - 8]
mov dword [ebp - 0x30], eax
mov al, byte [ebp - 0xc]
mov byte [ebx], 0x17
inc ebx
jmp 0x5a54a7
cmp dword [ebp - 0x24], 0
je 0x5a5af4
cmp dword [ebp - 0xc], 0x7f
jle 0x5a5af4
lea eax, [ebp + 0x28]
push eax
push dword [ebp - 0xc]
jmp 0x5a54c3
mov al, byte [ebp - 0xc]
xor esi, esi
mov byte [ebp + 0x28], al
inc esi
test byte [ebp - 0x14], 1
mov dword [ebp + 0x10], ebx
setne al
add al, 0x15
mov byte [ebx], al
inc ebx
xor eax, eax
test esi, esi
mov dword [ebp + 0x18], ebx
jle 0x5a5b24
mov cl, byte [ebp + eax + 0x28]
mov byte [ebx], cl
inc ebx
inc eax
cmp eax, esi
jl 0x5a5b15
mov dword [ebp + 0x18], ebx
mov eax, dword [ebp - 8]
cmp eax, 0xfffffffe
jne 0x5a5b73
or dword [ebp - 0x30], 0xffffffff
cmp esi, 1
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0xc], eax
je 0x5a5b4e
cmp dword [ebp - 0x40], 0
je 0x5a5b4e
or dword [ebp - 0x20], 0xffffffff
or dword [ebp - 8], 0xffffffff
jmp 0x5a6236
movzx eax, byte [ebp + 0x28]
or eax, dword [ebp - 0x40]
cmp esi, 1
mov dword [ebp - 8], eax
je 0x5a6236
movzx eax, byte [ebx - 1]
mov ecx, dword [ebp + 0x7c]
or eax, dword [ecx + 0x2c]
mov dword [ebp - 0x20], eax
jmp 0x5a6236
cmp esi, 1
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0xc], eax
je 0x5a5b8b
cmp dword [ebp - 0x40], 0
jne 0x5a6236
movzx eax, byte [ebx - 1]
mov ecx, dword [ebp + 0x7c]
or eax, dword [ecx + 0x2c]
or eax, dword [ebp - 0x40]
jmp 0x5a5b6b
cmp dword [ebp - 8], 0xfffffffe
jne 0x5a5ba4
or dword [ebp - 8], 0xffffffff
mov eax, dword [ebp - 8]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x20]
xor edx, edx
cmp dword [ebp - 0x18], edx
mov dword [ebp + 0xc], eax
je 0x5a5c20
mov ecx, dword [ebp + 8]
mov byte [ecx], dl
inc ecx
mov byte [ebx], 0x3d
add ebx, 3
cmp dword [ebp], edx
mov dword [ebp + 8], ecx
setne al
cmp dword [ebp + 0x18], edx
mov byte [ebx], al
jle 0x5a5be7
or al, 2
push 8
mov byte [ebx], al
mov eax, dword [ebp + 8]
lea edi, [ebx + 1]
pop ecx
lea esi, [ebp + 0x30]
rep movsd dword es:[edi], dword [esi]
jmp 0x5a5c03
sub ecx, ebx
sub ecx, 0x21
mov esi, ecx
push esi
lea eax, [ebx + 0x21]
push eax
lea eax, [ebx + 1]
push eax
call fcn.005efe20
add esp, 0xc
lea eax, [ebx + esi + 1]
mov dword [ebp + 0x18], eax
mov ecx, eax
mov eax, dword [ebp + 0x10]
sub ecx, eax
sar ecx, 8
mov byte [eax + 1], cl
mov cl, byte [ebp + 0x18]
sub cl, al
mov byte [eax + 2], cl
jmp 0x5a52fd
cmp dword [ebp], edx
je 0x5a5c40
mov byte [ebx], 0x3c
inc ebx
lea eax, [ebp + 0x30]
push 0x20
mov esi, ebx
sub eax, ebx
pop edi
mov cl, byte [eax + esi]
not cl
mov byte [esi], cl
inc esi
dec edi
jne 0x5a5c33
jmp 0x5a5c56
cmp dword [ebp + 4], 0
push 8
setne al
add al, 0x3b
mov byte [ebx], al
inc ebx
pop ecx
lea esi, [ebp + 0x30]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
add ebx, 0x20
jmp 0x5a548d
mov dword [ebp - 0x1c], 1
mov dword [ebp - 0x10], edi
mov edx, dword [ebp - 0x1c]
cmp dword [ebp + 0x10], edi
je 0x5a62cf
cmp dword [ebp - 0x10], edi
jne 0x5a5c85
mov eax, dword [ebp - 0x30]
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x20], eax
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x10]
sub edi, edx
neg edi
sbb edi, edi
and dword [ebp + 4], 0
and dword [ebp - 0x2c], 0
and edi, 0x200
inc esi
mov dword [ebp - 0x38], ecx
mov al, byte [esi]
cmp al, 0x2b
mov dword [ebp], edi
jne 0x5a5cc0
xor eax, eax
mov dword [ebp + 8], eax
mov dword [ebp - 0x2c], 1
mov dword [ebp + 0x1c], esi
jmp 0x5a5cd2
cmp al, 0x3f
jne 0x5a5ccc
mov eax, dword [ebp - 0x58]
mov dword [ebp + 0x1c], esi
jmp 0x5a5ccf
mov eax, dword [ebp - 0x54]
mov dword [ebp + 8], eax
cmp byte [ecx], 0x3f
jne 0x5a5d18
mov eax, dword [ebp + 0x10]
push 3
push eax
add eax, 3
push eax
call fcn.005efe20
mov eax, dword [ebp + 0x10]
add ebx, 3
mov ecx, ebx
sub ecx, eax
mov dl, bl
sub dl, al
sar ecx, 8
mov byte [eax + 2], dl
mov byte [eax], 0x50
mov byte [eax + 1], cl
mov eax, dword [ebp + 8]
mov byte [ebx + 2], dl
mov edx, dword [ebp - 0x1c]
add esp, 0xc
mov byte [ebx], 0x42
mov byte [ebx + 1], cl
add ebx, 3
mov dword [ebp + 0x18], ebx
mov esi, dword [ebp + 0x10]
mov cl, byte [esi]
cmp cl, 0x15
mov byte [ebp - 1], cl
je 0x5a5fce
cmp cl, 0x16
je 0x5a5fce
cmp cl, 0x17
jne 0x5a5d4a
movzx ecx, byte [esi + 1]
mov dword [ebp + 4], 9
mov dword [ebp + 0x14], ecx
jmp 0x5a602e
cmp cl, 0x10
jae 0x5a5d5c
movzx ecx, byte [ebp - 1]
mov dword [ebp + 4], 0x12
jmp 0x5a5d42
cmp cl, 0x3b
je 0x5a5f5c
cmp cl, 0x3c
je 0x5a5f5c
cmp cl, 0x3d
je 0x5a5f5c
cmp cl, 0x3e
je 0x5a5f5c
cmp cl, 0x50
jae 0x5a5d93
cmp cl, 0x4a
je 0x5a5d93
cmp cl, 0x4b
jne 0x5a62da
and dword [ebp + 4], 0
and dword [ebp - 0xc], 0
mov eax, ebx
sub eax, esi
cmp edx, 0xffffffff
mov dword [ebp + 0x14], eax
jne 0x5a5dbf
mov ecx, esi
xor eax, eax
mov ah, byte [ecx + 1]
mov al, byte [ecx + 2]
add ecx, eax
cmp byte [ecx], 0x42
jne 0x5a5da9
mov eax, ebx
sub eax, ecx
mov dword [ebp + 4], eax
cmp dword [ebp - 0x10], 0
jne 0x5a5e57
test edx, edx
jne 0x5a5dd8
mov dword [ebp + 0x18], esi
mov ebx, dword [ebp + 0x18]
jmp 0x5a622c
cmp edx, 1
push dword [ebp + 0x7c]
mov byte [ebx], 0
push dword [ebp - 0x24]
push dword [ebp + 0x10]
jg 0x5a5e13
xor ebx, ebx
inc ebx
call fcn.005a4a2a
push dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
lea edi, [esi + 1]
push esi
push edi
call fcn.005efe20
mov al, byte [ebp + 8]
add esp, 0x18
inc dword [ebp + 0x18]
add al, 0x4d
mov byte [esi], al
mov dword [ebp + 0x10], edi
jmp 0x5a5e4c
push 4
pop ebx
call fcn.005a4a2a
push dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
lea eax, [esi + 4]
push esi
push eax
call fcn.005efe20
mov al, byte [ebp + 8]
add dword [ebp + 0x18], ebx
add al, 0x4d
mov byte [esi], al
add esp, 0x18
inc esi
mov byte [esi], 0x50
inc esi
mov dword [ebp - 0xc], esi
mov byte [esi], 0
mov byte [esi + 1], 0
inc esi
inc esi
mov dword [ebp + 0x10], esi
dec dword [ebp - 0x1c]
mov ebx, dword [ebp + 0x18]
mov eax, dword [ebp - 0x1c]
jmp 0x5a5ea4
cmp dword [ebp - 0x10], 1
jle 0x5a5e97
cmp dword [ebp - 0x50], 0
je 0x5a5e6f
cmp dword [ebp - 0x20], 0
jge 0x5a5e6f
mov eax, dword [ebp - 8]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x10], 1
jle 0x5a5e97
mov eax, dword [ebp - 0x10]
dec eax
mov ecx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov edx, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
add ebx, edx
dec eax
rep movsb byte es:[edi], byte [esi]
jne 0x5a5e79
mov dword [ebp + 0x18], ebx
mov eax, dword [ebp - 0x1c]
test eax, eax
jle 0x5a5ea6
sub eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], eax
test eax, eax
jl 0x5a5f4d
lea edx, [eax - 1]
test edx, edx
jl 0x5a5f05
mov al, byte [ebp + 8]
add al, 0x4d
mov byte [ebp - 1], al
jmp 0x5a5ec0
mov al, byte [ebp - 1]
mov byte [ebx], al
inc ebx
test edx, edx
je 0x5a5ee7
mov eax, dword [ebp - 0xc]
mov byte [ebx], 0x50
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 - 0xc], ebx
mov byte [ebx], cl
mov byte [ebx + 1], al
inc ebx
inc ebx
mov ecx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov eax, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
add ebx, eax
dec edx
rep movsb byte es:[edi], byte [esi]
jns 0x5a5ebd
mov dword [ebp + 0x18], ebx
cmp dword [ebp - 0xc], 0
je 0x5a61dd
mov edi, dword [ebp - 0xc]
mov ecx, ebx
sub ecx, dword [ebp - 0xc]
xor edx, edx
inc ecx
mov eax, ebx
sub eax, ecx
mov dh, byte [eax + 1]
mov dl, byte [eax + 2]
mov byte [ebx], 0x42
mov byte [ebx + 2], cl
sub edi, edx
mov esi, edx
neg esi
sbb esi, esi
and esi, edi
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
inc ebx
inc ebx
test esi, esi
mov dword [ebp - 0xc], esi
mov byte [eax + 1], dl
mov byte [eax + 2], cl
jne 0x5a5f0f
jmp 0x5a5f98
mov al, byte [ebp + 8]
mov ecx, ebx
add al, 0x43
sub ecx, dword [ebp + 4]
jmp 0x5a61db
test edx, edx
je 0x5a5dcd
xor esi, esi
inc esi
cmp edx, esi
je 0x5a5f71
mov ecx, dword [ebp + 0x7c]
mov dword [ecx + 0x30], esi
cmp dword [ebp - 0x10], 0
jne 0x5a5f80
cmp edx, 0xffffffff
jne 0x5a5f8f
add al, 0x33
jmp 0x5a5f95
cmp dword [ebp - 0x10], 1
jne 0x5a5fa0
cmp edx, 0xffffffff
jne 0x5a5fa0
add al, 0x35
jmp 0x5a5f95
cmp edx, esi
jne 0x5a5fa0
add al, 0x37
mov byte [ebx], al
inc ebx
mov dword [ebp + 0x18], ebx
jmp 0x5a61dd
add al, 0x39
mov byte [ebx], al
mov eax, dword [ebp - 0x10]
inc ebx
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], al
inc ebx
inc ebx
cmp edx, 0xffffffff
jne 0x5a5fc0
and dword [ebp - 0x1c], 0
mov edx, dword [ebp - 0x1c]
mov eax, edx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], dl
inc ebx
inc ebx
jmp 0x5a5f98
cmp dword [ebp - 0x24], 0
je 0x5a600f
lea ecx, [ebx - 1]
test byte [ecx], 0x80
je 0x5a600f
mov esi, ecx
jmp 0x5a5fe1
dec esi
mov cl, byte [esi]
and cl, 0xc0
cmp cl, 0x80
je 0x5a5fe0
mov ecx, ebx
sub ecx, esi
mov dword [ebp + 0x14], ecx
mov edx, ecx
shr ecx, 2
lea edi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [ebp - 0x1c]
and ecx, 3
or byte [ebp + 0x14], 0x80
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp]
jmp 0x5a602b
cmp dword [ebp - 0x10], 1
movzx ecx, byte [ebx - 1]
mov dword [ebp + 0x14], ecx
jle 0x5a602e
mov ecx, dword [ebp + 0x7c]
mov esi, dword [ecx + 0x2c]
or esi, dword [ebp + 0x14]
or esi, dword [ebp - 0x40]
mov dword [ebp - 0x20], esi
mov esi, dword [ebp + 0x10]
cmp byte [ebp - 1], 0xe
je 0x5a6040
cmp byte [ebp - 1], 0xd
je 0x5a6040
or dword [ebp - 0x18], 0xffffffff
jmp 0x5a6047
movzx ecx, byte [esi + 1]
mov dword [ebp - 0x18], ecx
test edx, edx
mov dword [ebp + 0x18], esi
je 0x5a5dd0
cmp edx, 1
je 0x5a6061
mov ecx, dword [ebp + 0x7c]
mov dword [ecx + 0x30], 1
mov ecx, dword [ebp + 4]
add eax, ecx
cmp dword [ebp - 0x10], 0
jne 0x5a6099
cmp edx, 0xffffffff
jne 0x5a6075
add al, 0x18
jmp 0x5a60a6
cmp edx, 1
jne 0x5a607e
add al, 0x1c
jmp 0x5a60a6
add al, 0x1e
mov ecx, edx
mov byte [esi], al
lea eax, [esi + 1]
sar ecx, 8
mov byte [eax], cl
mov byte [eax + 1], dl
inc eax
inc eax
mov dword [ebp + 0x18], eax
jmp 0x5a619c
cmp dword [ebp - 0x10], 1
jne 0x5a60cb
cmp edx, 0xffffffff
jne 0x5a60ae
add al, 0x1a
mov byte [esi], al
inc esi
jmp 0x5a6199
cmp edx, 1
mov dword [ebp + 0x18], ebx
je 0x5a5dd0
add al, 0x1e
lea ecx, [edx - 1]
mov byte [ebx], al
sar ecx, 8
lea eax, [ebx + 1]
dec dl
jmp 0x5a608a
add cl, 0x20
mov byte [esi], cl
mov ecx, dword [ebp - 0x10]
sar ecx, 8
lea ebx, [esi + 1]
mov byte [ebx], cl
mov ecx, dword [ebp - 0x10]
mov byte [ebx + 1], cl
inc ebx
inc ebx
test edx, edx
mov dword [ebp + 0x18], ebx
jge 0x5a6133
cmp dword [ebp - 0x24], 0
je 0x5a6119
cmp dword [ebp + 0x14], 0x80
jl 0x5a6119
mov ecx, dword [ebp + 0x14]
and ecx, 7
mov dword [ebp + 4], ecx
mov edx, ecx
shr ecx, 2
mov edi, ebx
lea esi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
add ebx, edx
jmp 0x5a6129
mov cl, byte [ebp + 0x14]
mov byte [ebx], cl
mov ecx, dword [ebp - 0x18]
inc ebx
test ecx, ecx
jl 0x5a6129
mov byte [ebx], cl
inc ebx
add al, 0x18
mov byte [ebx], al
inc ebx
mov dword [ebp + 0x18], ebx
jmp 0x5a619c
cmp edx, ecx
je 0x5a619c
cmp dword [ebp - 0x24], 0
je 0x5a616a
cmp dword [ebp + 0x14], 0x80
jl 0x5a616a
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x18]
and ecx, 7
mov dword [ebp + 4], ecx
mov ebx, ecx
shr ecx, 2
lea esi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp + 0x18]
add esi, ebx
jmp 0x5a6178
mov esi, dword [ebp + 0x18]
mov cl, byte [ebp + 0x14]
inc dword [ebp + 0x18]
mov byte [esi], cl
mov esi, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jl 0x5a6182
mov byte [esi], cl
inc esi
sub edx, dword [ebp - 0x10]
add al, 0x1e
mov byte [esi], al
inc esi
mov eax, edx
sar eax, 8
mov byte [esi], al
mov byte [esi + 1], dl
inc esi
mov dword [ebp - 0x1c], edx
inc esi
mov dword [ebp + 0x18], esi
cmp dword [ebp - 0x24], 0
je 0x5a61cf
cmp dword [ebp + 0x14], 0x80
jl 0x5a61cf
mov eax, dword [ebp + 0x14]
mov edi, dword [ebp + 0x18]
and eax, 7
mov ecx, eax
mov edx, ecx
shr ecx, 2
lea esi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
add dword [ebp + 0x18], eax
mov ebx, dword [ebp + 0x18]
rep movsb byte es:[edi], byte [esi]
jmp 0x5a61dd
mov ecx, dword [ebp + 0x18]
inc dword [ebp + 0x18]
mov al, byte [ebp + 0x14]
mov ebx, dword [ebp + 0x18]
mov byte [ecx], al
cmp dword [ebp - 0x2c], 0
je 0x5a6229
mov ecx, dword [ebp - 0x38]
mov eax, ebx
sub eax, ecx
push eax
push ecx
add ecx, 3
push ecx
mov dword [ebp - 0x2c], eax
call fcn.005efe20
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x2c]
mov byte [ecx], 0x4a
add eax, 3
add ebx, 3
mov byte [ebx], 0x42
add esp, 0xc
inc ebx
mov byte [ebx + 1], al
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov edx, dword [ebp - 0x38]
inc ebx
mov byte [edx + 1], cl
mov ecx, dword [ebp - 0x38]
inc ebx
mov dword [ebp + 0x18], ebx
mov byte [ecx + 2], al
mov edi, dword [ebp]
mov eax, dword [ebp + 0x7c]
and dword [ebp + 0x10], 0
or dword [eax + 0x2c], edi
mov esi, dword [ebp + 0x1c]
inc esi
xor edi, edi
jmp 0x5a4b24
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0x23
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0x2b
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0xf
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0x28
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0x26
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0x1b
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0xe
jmp 0x5a62e3
mov ecx, dword [ebp + 0x1c]
xor eax, eax
cmp byte [ecx + 1], 0x3a
mov ecx, dword [ebp + 0x6c]
setne al
dec eax
and eax, 0xffffffee
add eax, 0x1f
mov dword [ecx], eax
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0x1f
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0x1e
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 7
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 9
jmp 0x5a62e3
mov eax, dword [ebp + 0x6c]
mov dword [eax], 0xb
xor eax, eax
mov ecx, dword [ebp + 0x68]
mov edx, dword [ebp + 0x1c]
pop edi
mov dword [ecx], edx
mov ecx, dword [ebp + 0x50]
pop esi
pop ebx
call fcn.005f050f
add ebp, 0x54
leave
ret