Function at 0x4ff648
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff8c
push ebx
push esi
push edi
mov eax, dword [ebp + 0x10]
mov esi, dword [eax]
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
mov dword [ebp - 0x20], edx
xor edi, edi
test byte [ebp + 9], 2
setne al
and eax, 1
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x14]
xor edx, 1
mov dword [ebp - 0x18], edx
xor ebx, ebx
mov ecx, dword [ebp - 0x20]
test byte [ebp + 8], 8
mov bl, byte [ecx]
je 0x4ff6b4
mov eax, dword [ebp + 0x20]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 1
jne 0x5002d4
cmp ebx, 0x23
jne 0x4ff6b4
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x5002d4
cmp ebx, 0xa
jne 0x4ff698
jmp 0x5002d4
mov eax, ebx
cmp eax, 0x2e
jg 0x4ff6f5
je 0x4ff754
cmp eax, 0x29
jg 0x4ff6e0
je 0x4ff727
sub eax, 1
jb 0x4ff727
sub eax, 0x23
je 0x4ff749
sub eax, 4
je 0x4ffe87
jmp 0x500223
sub eax, 0x2a
je 0x4ffb23
dec eax
je 0x4ffb31
jmp 0x500223
cmp eax, 0x5e
jg 0x4ff716
je 0x4ff73e
sub eax, 0x3f
je 0x4ffb41
sub eax, 0x1c
je 0x4ff75f
dec eax
je 0x5001ae
jmp 0x500223
sub eax, 0x7b
je 0x4ffadc
dec eax
je 0x4ff727
jmp 0x500223
mov edx, dword [ebp + 0x10]
mov dword [edx], esi
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x20]
mov dword [ecx], eax
mov eax, 1
jmp 0x5002e6
xor edi, edi
mov byte [esi], 0xd
inc esi
jmp 0x5002d4
xor edi, edi
mov byte [esi], 0xe
inc esi
jmp 0x5002d4
mov edi, esi
mov byte [esi], 0xf
inc esi
jmp 0x5002d4
mov edi, esi
mov byte [esi], 0x35
inc esi
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax]
cmp ebx, 0x5e
jne 0x4ff787
mov dword [ebp - 0x28], 1
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax]
jmp 0x4ff78c
xor eax, eax
mov dword [ebp - 0x28], eax
xor edx, edx
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], 0xffffffff
push 0x20
push 0
push ecx
call fcn.004cf204
add esp, 0xc
test ebx, ebx
jne 0x4ff7ba
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x325aa515
jmp 0x5002dc
cmp ebx, 0x5c
jne 0x4ff92e
mov edx, dword [ebp + 0x20]
push edx
push 1
mov ecx, dword [ebp + 8]
push ecx
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
push edx
mov ecx, dword [ebp + 0x18]
push ecx
lea eax, [ebp - 0x20]
push eax
call fcn.004ff1b4
add esp, 0x18
mov ebx, eax
mov eax, ebx
neg eax
cmp eax, 3
jne 0x4ff7f8
mov ebx, 8
jmp 0x4ff92e
test ebx, ebx
jge 0x4ff92e
mov eax, dword [ebp + 0x20]
neg ebx
mov edx, dword [eax + 8]
add ebx, 0xfffffffc
mov dword [ebp - 0x38], edx
cmp ebx, 5
mov dword [ebp - 0x2c], 0xa
ja 0x4ff920
jmp dword [ebx*4 + 0x325807f5]
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x325aa53f
jmp 0x5002dc
mov eax, dword [ebp - 0x20]
cmp byte [eax + 1], 0x2d
jne 0x4ffa17
mov edx, dword [ebp - 0x20]
cmp byte [edx + 2], 0x5d
je 0x4ffa17
add dword [ebp - 0x20], 2
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov al, byte [ecx]
test eax, eax
jne 0x4ff965
mov edx, dword [ebp + 0x18]
mov dword [edx], 0x325aa56a
jmp 0x5002dc
cmp eax, 0x5c
jne 0x4ff9a8
mov ecx, dword [ebp + 0x20]
push ecx
push 1
mov eax, dword [ebp + 8]
push eax
mov edx, dword [ebp + 0xc]
mov ecx, dword [edx]
push ecx
mov eax, dword [ebp + 0x18]
push eax
lea edx, [ebp - 0x20]
push edx
call fcn.004ff1b4
add esp, 0x18
test eax, eax
jge 0x4ff9a8
cmp eax, 0xfffffffd
jne 0x4ff99a
mov eax, 8
jmp 0x4ff9a8
mov edx, dword [ebp + 0x18]
mov dword [edx], 0x325aa594
jmp 0x5002dc
cmp ebx, eax
jle 0x4ff9ba
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 0x325aa5bf
jmp 0x5002dc
cmp eax, ebx
jl 0x4ffa62
mov ecx, ebx
and ecx, 7
mov dl, 1
shl dl, cl
mov ecx, ebx
test ecx, ecx
jns 0x4ff9d4
add ecx, 7
sar ecx, 3
or byte [ebp + ecx - 0x74], dl
test byte [ebp + 8], 1
je 0x4ffa0a
mov edx, dword [ebp + 0x20]
mov edx, dword [edx + 4]
xor ecx, ecx
mov cl, byte [edx + ebx]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x3c]
and ecx, 7
mov dl, 1
shl dl, cl
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
jns 0x4ffa03
add ecx, 7
sar ecx, 3
or byte [ebp + ecx - 0x74], dl
inc dword [ebp - 0x2c]
mov dword [ebp - 0x30], ebx
inc ebx
cmp eax, ebx
jge 0x4ff9c2
jmp 0x4ffa62
mov ecx, ebx
mov al, 1
and ecx, 7
mov edx, ebx
shl al, cl
test edx, edx
jns 0x4ffa29
add edx, 7
sar edx, 3
or byte [ebp + edx - 0x74], al
test byte [ebp + 8], 1
je 0x4ffa5c
mov eax, dword [ebp + 0x20]
xor ecx, ecx
mov edx, dword [eax + 4]
mov al, 1
mov cl, byte [edx + ebx]
mov ebx, ecx
mov ecx, ebx
mov edx, ebx
and ecx, 7
shl al, cl
test edx, edx
jns 0x4ffa55
add edx, 7
sar edx, 3
or byte [ebp + edx - 0x74], al
inc dword [ebp - 0x2c]
mov dword [ebp - 0x30], ebx
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax]
cmp ebx, 0x5d
jne 0x4ff7a8
cmp dword [ebp - 0x2c], 1
jne 0x4ffaa0
cmp dword [ebp - 0x30], 0
jl 0x4ffaa0
cmp dword [ebp - 0x28], 0
je 0x4ffa8d
mov byte [esi - 1], 0x11
jmp 0x4ffa95
mov byte [esi - 1], 0x10
mov byte [esi], 1
inc esi
mov al, byte [ebp - 0x30]
mov byte [esi], al
inc esi
jmp 0x5002d4
cmp dword [ebp - 0x28], 0
je 0x4ffac5
xor ebx, ebx
mov eax, esi
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x74]
mov dl, byte [eax]
mov ecx, dword [ebp - 0x54]
not dl
mov byte [ecx], dl
inc eax
inc dword [ebp - 0x54]
inc ebx
cmp ebx, 0x20
jl 0x4ffab0
jmp 0x4ffad4
push 0x20
lea eax, [ebp - 0x74]
push eax
push esi
call fcn.004cf170
add esp, 0xc
add esi, 0x20
jmp 0x5002d4
mov edx, dword [ebp + 0x20]
push edx
mov ecx, dword [ebp - 0x20]
inc ecx
push ecx
call fcn.004ff358
add esp, 8
test eax, eax
je 0x500223
mov eax, dword [ebp + 0x20]
lea ecx, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
mov edx, dword [ebp + 0x18]
push edx
push ecx
push eax
mov edx, dword [ebp - 0x20]
inc edx
push edx
call fcn.004ff3e0
add esp, 0x14
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x5002dc
jmp 0x4ffb4d
xor eax, eax
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], 0xffffffff
jmp 0x4ffb4d
mov dword [ebp - 8], 1
mov dword [ebp - 0xc], 0xffffffff
jmp 0x4ffb4d
xor edx, edx
mov dword [ebp - 8], edx
mov dword [ebp - 0xc], 1
test edi, edi
jne 0x4ffb5f
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 0x325aa5e5
jmp 0x5002dc
mov eax, dword [ebp - 0x20]
cmp byte [eax + 1], 0x3f
jne 0x4ffb73
mov edx, dword [ebp - 0x18]
mov dword [ebp - 4], edx
inc dword [ebp - 0x20]
jmp 0x4ffb79
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 4], ecx
cmp dword [ebp - 0xc], 0
jne 0x4ffb86
mov esi, edi
jmp 0x4ffe80
cmp byte [edi], 0x10
jne 0x4ffbb1
xor eax, eax
mov al, byte [edi + 1]
cmp eax, 1
jne 0x4ffb9e
xor ebx, ebx
mov esi, edi
mov bl, byte [edi + 2]
jmp 0x4ffba8
xor ebx, ebx
mov bl, byte [edi + eax + 1]
dec byte [edi + 1]
dec esi
xor eax, eax
jmp 0x4ffbe5
xor edx, edx
mov dl, byte [edi]
cmp edx, 0x11
jne 0x4ffbc8
mov eax, 9
xor ebx, ebx
mov bl, byte [edi + 1]
mov esi, edi
jmp 0x4ffbe5
xor eax, eax
mov al, byte [edi]
cmp eax, 0xa
jl 0x4ffbda
cmp byte [edi], 0xf
jne 0x4ffccc
mov eax, 0x12
xor ebx, ebx
mov bl, byte [edi]
mov esi, edi
add dword [ebp - 4], eax
cmp dword [ebp - 8], 0
jne 0x4ffc35
cmp dword [ebp - 0xc], 0xffffffff
jne 0x4ffc01
mov al, byte [ebp - 4]
add al, 0x12
mov byte [esi], al
inc esi
jmp 0x4ffcc4
cmp dword [ebp - 0xc], 1
jne 0x4ffc15
mov dl, byte [ebp - 4]
add dl, 0x16
mov byte [esi], dl
inc esi
jmp 0x4ffcc4
mov cl, byte [ebp - 4]
add cl, 0x18
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0xc]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 0xc]
and dl, 0xff
mov byte [esi], dl
inc esi
jmp 0x4ffcc4
cmp dword [ebp - 8], 1
jne 0x4ffc4c
cmp dword [ebp - 0xc], 0xffffffff
jne 0x4ffc4c
mov cl, byte [ebp - 4]
add cl, 0x14
mov byte [esi], cl
inc esi
jmp 0x4ffcc4
cmp dword [ebp - 8], 1
je 0x4ffc6b
add al, 0x1a
mov byte [esi], al
inc esi
mov eax, dword [ebp - 8]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 8]
and dl, 0xff
mov byte [esi], dl
inc esi
jmp 0x4ffc84
cmp byte [edi], 0x10
jne 0x4ffc7e
cmp edi, esi
jne 0x4ffc79
add esi, 2
jmp 0x4ffc84
inc byte [edi + 1]
jmp 0x4ffc84
cmp byte [edi], 0x11
jne 0x4ffc84
inc esi
cmp dword [ebp - 0xc], 0
jge 0x4ffc98
mov byte [esi], bl
inc esi
mov cl, byte [ebp - 4]
add cl, 0x12
mov byte [esi], cl
inc esi
jmp 0x4ffcc4
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 8]
je 0x4ffcc4
mov byte [esi], bl
inc esi
mov edx, dword [ebp - 8]
sub dword [ebp - 0xc], edx
mov cl, byte [ebp - 4]
add cl, 0x18
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0xc]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 0xc]
and dl, 0xff
mov byte [esi], dl
inc esi
mov byte [esi], bl
inc esi
jmp 0x4ffe80
cmp byte [edi], 0x35
je 0x4ffcda
cmp byte [edi], 0x36
jne 0x4ffd64
cmp dword [ebp - 8], 0
jne 0x4ffcf4
cmp dword [ebp - 0xc], 0xffffffff
jne 0x4ffcf4
mov cl, byte [ebp - 4]
add cl, 0x2d
mov byte [esi], cl
inc esi
jmp 0x4ffe80
cmp dword [ebp - 8], 1
jne 0x4ffd0d
cmp dword [ebp - 0xc], 0xffffffff
jne 0x4ffd0d
mov al, byte [ebp - 4]
add al, 0x2f
mov byte [esi], al
inc esi
jmp 0x4ffe80
cmp dword [ebp - 8], 0
jne 0x4ffd27
cmp dword [ebp - 0xc], 1
jne 0x4ffd27
mov dl, byte [ebp - 4]
add dl, 0x31
mov byte [esi], dl
inc esi
jmp 0x4ffe80
mov cl, byte [ebp - 4]
add cl, 0x33
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 8]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 8]
and dl, 0xff
mov byte [esi], dl
inc esi
cmp dword [ebp - 0xc], 0xffffffff
jne 0x4ffd4d
xor ecx, ecx
mov dword [ebp - 0xc], ecx
mov eax, dword [ebp - 0xc]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 0xc]
and dl, 0xff
mov byte [esi], dl
inc esi
jmp 0x4ffe80
xor eax, eax
mov al, byte [edi]
cmp eax, 0x45
jge 0x4ffd7b
cmp eax, 0x40
je 0x4ffd7b
cmp eax, 0x41
jne 0x4ffe72
xor edx, edx
mov ecx, esi
sub ecx, edi
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], ecx
cmp dword [ebp - 0xc], 0xffffffff
jne 0x4ffdac
mov eax, edi
xor edx, edx
xor ecx, ecx
mov dl, byte [eax + 1]
mov cl, byte [eax + 2]
shl edx, 8
add edx, ecx
add eax, edx
cmp byte [eax], 0x38
jne 0x4ffd8f
mov edx, esi
sub edx, eax
mov dword [ebp - 0x40], edx
cmp dword [ebp - 8], 0
jle 0x4ffde7
cmp dword [ebp - 0xc], 0xffffffff
je 0x4ffdc0
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 8]
jne 0x4ffde7
mov ebx, 1
cmp ebx, dword [ebp - 8]
jge 0x4ffe5c
mov eax, dword [ebp - 0x44]
push eax
push edi
push esi
call fcn.004cf170
add esp, 0xc
add esi, dword [ebp - 0x44]
inc ebx
cmp ebx, dword [ebp - 8]
jl 0x4ffdce
jmp 0x4ffe5c
cmp dword [ebp - 8], 0
jne 0x4ffe07
mov edx, dword [ebp - 0x44]
lea ecx, [edi + 1]
push edx
push edi
push ecx
call fcn.004cf1b8
mov al, byte [ebp - 4]
add esp, 0xc
add al, 0x43
inc esi
mov byte [edi], al
inc edi
mov ebx, 1
cmp ebx, dword [ebp - 8]
jge 0x4ffe28
mov eax, dword [ebp - 0x44]
push eax
push edi
push esi
call fcn.004cf170
add esp, 0xc
add esi, dword [ebp - 0x44]
inc ebx
cmp ebx, dword [ebp - 8]
jl 0x4ffe11
cmp dword [ebp - 8], 0
jle 0x4ffe33
mov ebx, dword [ebp - 8]
jmp 0x4ffe38
mov ebx, 1
cmp ebx, dword [ebp - 0xc]
jge 0x4ffe5c
mov al, byte [ebp - 4]
add al, 0x43
mov byte [esi], al
inc esi
mov edx, dword [ebp - 0x44]
push edx
push edi
push esi
call fcn.004cf170
add esp, 0xc
add esi, dword [ebp - 0x44]
inc ebx
cmp ebx, dword [ebp - 0xc]
jl 0x4ffe3d
cmp dword [ebp - 0xc], 0xffffffff
jne 0x4ffe80
mov cl, byte [ebp - 4]
add cl, 0x39
mov eax, dword [ebp - 0x40]
neg eax
mov byte [esi + eax], cl
jmp 0x4ffe80
mov edx, dword [ebp + 0x18]
mov dword [edx], 0x325aa5f7
jmp 0x5002dc
xor edi, edi
jmp 0x5002d4
mov eax, dword [ebp + 8]
mov dword [ebp - 0x34], 0xffffffff
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0x3f
jne 0x5000ce
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [ecx]
add edx, 0xffffffdf
cmp edx, 0x1d
ja 0x4fffdf
mov dl, byte [edx + 0x32580e93]
jmp dword [edx*4 + 0x32580eb1]
xor eax, eax
lea edx, [ebp - 0x48]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x50], edx
jmp 0x50006b
mov ecx, dword [ebp - 0x20]
inc dword [ebp - 0x20]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x69
jg 0x500011
je 0x50002a
sub eax, 0x2d
je 0x500022
sub eax, 0x28
je 0x50004a
sub eax, 3
je 0x500055
jmp 0x50005d
sub eax, 0x6d
je 0x500032
sub eax, 6
je 0x50003a
sub eax, 5
je 0x500042
jmp 0x50005d
lea edx, [ebp - 0x4c]
mov dword [ebp - 0x50], edx
jmp 0x50006b
mov ecx, dword [ebp - 0x50]
or dword [ecx], 1
jmp 0x50006b
mov eax, dword [ebp - 0x50]
or dword [eax], 2
jmp 0x50006b
mov edx, dword [ebp - 0x50]
or dword [edx], 4
jmp 0x50006b
mov ecx, dword [ebp - 0x50]
or dword [ecx], 8
jmp 0x50006b
mov eax, dword [ebp - 0x50]
or dword [eax], 0x200
jmp 0x50006b
mov edx, dword [ebp - 0x50]
or dword [edx], 0x40
jmp 0x50006b
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 0x325aa63a
jmp 0x5002dc
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0x29
je 0x50007f
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0x3a
jne 0x4fffef
mov eax, dword [ebp + 8]
or eax, dword [ebp - 0x48]
mov edx, dword [ebp - 0x4c]
not edx
and eax, edx
mov ecx, dword [ebp - 0x20]
cmp byte [ecx], 0x29
jne 0x5000c4
test byte [ebp + 9], 0x20
je 0x5000ba
mov edx, dword [ebp + 8]
mov ecx, eax
and ecx, 7
and edx, 7
cmp edx, ecx
je 0x5000ba
mov byte [esi], 0xc
inc esi
mov ecx, dword [ebp + 0x1c]
mov edx, eax
and edx, 7
mov dword [ecx], edx
mov byte [esi], dl
inc esi
mov dword [ebp + 8], eax
xor edi, edi
jmp 0x5002d4
mov ebx, 0x45
inc dword [ebp - 0x20]
jmp 0x5000f0
mov edx, dword [ebp + 0xc]
inc dword [edx]
mov ecx, dword [edx]
cmp ecx, 0x63
jle 0x5000e8
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x325aa65a
jmp 0x5002dc
mov edx, dword [ebp + 0xc]
mov ebx, dword [edx]
add ebx, 0x45
cmp ebx, 0x40
jl 0x5000f9
mov edi, esi
jmp 0x5000fb
xor edi, edi
mov byte [esi], bl
mov dword [ebp - 0x1c], esi
mov edx, dword [ebp + 0x20]
cmp ebx, 0x3d
push edx
mov ecx, dword [ebp - 0x34]
push ecx
je 0x500116
cmp ebx, 0x3e
je 0x500116
xor edx, edx
jmp 0x50011b
mov edx, 1
push edx
lea edx, [ebp - 0x20]
mov ecx, dword [ebp + 0x18]
push ecx
lea ecx, [ebp - 0x1c]
push edx
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov edx, eax
mov ecx, dword [ebp + 8]
and edx, 7
and ecx, 7
cmp ecx, edx
je 0x500140
and eax, 7
jmp 0x500143
or eax, 0xffffffff
push eax
mov ecx, dword [ebp + 8]
or ecx, 0x2000
push ecx
call fcn.005002f0
add esp, 0x24
test eax, eax
je 0x5002dc
cmp ebx, 0x41
jne 0x500191
xor edx, edx
mov eax, esi
xor ecx, ecx
xor ebx, ebx
mov cl, byte [eax + 1]
mov bl, byte [eax + 2]
shl ecx, 8
inc edx
or ecx, ebx
add eax, ecx
cmp byte [eax], 0x38
jne 0x500167
cmp edx, 2
jle 0x500191
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x325aa688
jmp 0x5002dc
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0x29
je 0x5002d4
mov edx, dword [ebp + 0x18]
mov dword [edx], 0x325aa6ba
jmp 0x5002dc
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp + 0x20]
push eax
push 0
mov edx, dword [ebp + 8]
push edx
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx]
push eax
mov edx, dword [ebp + 0x18]
push edx
lea ecx, [ebp - 0x20]
push ecx
call fcn.004ff1b4
add esp, 0x18
mov ebx, eax
test ebx, ebx
jge 0x500218
mov eax, ebx
neg eax
cmp eax, 0xc
jl 0x5001f6
mov edi, esi
mov byte [esi], 0x36
inc esi
neg bl
add bl, 0xf4
mov byte [esi], bl
inc esi
jmp 0x5002d4
mov eax, ebx
neg eax
cmp eax, 3
jle 0x50020c
mov edx, ebx
neg edx
cmp edx, 0xa
jge 0x50020c
mov edi, esi
jmp 0x50020e
xor edi, edi
neg bl
mov byte [esi], bl
inc esi
jmp 0x5002d4
mov eax, dword [ebp - 0x24]
mov ebx, 0x5c
mov dword [ebp - 0x20], eax
mov edi, esi
mov byte [esi], 0x10
add esi, 2
xor eax, eax
mov dword [ebp - 0x10], eax
test byte [ebp + 8], 8
je 0x500260
mov edx, dword [ebp + 0x20]
mov ecx, dword [edx + 0xc]
test byte [ecx + ebx], 1
jne 0x50029f
cmp ebx, 0x23
jne 0x500260
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax]
test ebx, ebx
je 0x50025a
cmp ebx, 0xa
jne 0x500247
test ebx, ebx
je 0x5002c2
jmp 0x50029f
cmp ebx, 0x5c
jne 0x500299
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov edx, dword [ebp + 0x20]
push edx
push 0
mov ecx, dword [ebp + 8]
push ecx
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
push edx
mov ecx, dword [ebp + 0x18]
push ecx
lea eax, [ebp - 0x20]
push eax
call fcn.004ff1b4
add esp, 0x18
mov ebx, eax
test ebx, ebx
jge 0x500299
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x20], eax
jmp 0x5002c2
mov byte [esi], bl
inc esi
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0xff
jge 0x5002c2
inc dword [ebp - 0x20]
xor ebx, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp + 0x20]
mov bl, byte [edx]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 0x80
je 0x500230
mov cl, byte [ebp - 0x10]
mov byte [edi + 1], cl
cmp dword [ebp - 0x10], 0xff
jge 0x5002d4
dec dword [ebp - 0x20]
inc dword [ebp - 0x20]
jmp 0x4ff676
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp - 0x20]
mov dword [eax], edx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret