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

Disassembly:
push es
add dword [eax], eax
add esp, 4
test eax, eax
je 0x4010b8
mov edx, dword [edi]
mov dword [eax], edx
mov ecx, dword [esi + 4]
mov dword [eax + 4], ecx
inc dword [esi]
mov dword [esi + 4], eax
ret
mov ecx, dword [esi + 4]
xor eax, eax
mov dword [eax + 4], ecx
inc dword [esi]
mov dword [esi + 4], eax
ret
adc byte [ebx + 0x530c244c], cl
mov ebx, dword [esp + 8]
push edi
mov edi, dword [esp + 0x10]
push eax
push ecx
call fcn.004010f0
pop edi
pop ebx
ret 0x10
push esi
cmp ebx, dword [0x4972c0]
jne 0x401150
cmp edi, 0x111
jae 0x401130
cmp edi, 0x12
jb 0x401130
cmp edi, dword [0x4a9380]
je 0x42e78b
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push edx
push eax
push edi
push ebx
call dword [0x482684]
pop esi
mov esp, ebp
pop ebp
ret 8
cmp edi, 0x113
jne 0x40115b
mov eax, dword [ebp + 8]
push 0x4a84b8
mov esi, ebx
call fcn.00401230
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret 8
mov eax, dword [0x4972c0]
test eax, eax
je 0x401100
jmp 0x401119
cmp edi, 0x10
ja 0x401199
je 0x42e70b
lea eax, [edi - 1]
cmp eax, 6
ja case.0x40116e.3
jmp dword [eax*4 + 0x401214]
push 1
push ebx
call dword [0x4826d0]
mov ecx, 0x4a84b8
call fcn.00401000
push 0
call dword [0x4826cc]
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret 8
cmp edi, 0x312
ja 0x401202
je 0x42e770
cmp edi, 0x11
je 0x42e740
cmp edi, 0x111
jne case.0x40116e.3
jmp 0x42e721
push 0
push 0x2ee
push 1
push ebx
call dword [0x4826dc]
add dword [ebx - 1], edx
adc eax, 0x4826dc
push 0x484868
call dword [0x4826d8]
cmp dword [0x4a84b8], 0
mov dword [0x4a9380], eax
jne 0x401147
call dword [0x4826d4]
mov dword [0x4a84b8], eax
test byte [edx], cl
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret 8
cmp edi, 0x401
jne case.0x40116e.3
jmp 0x42e7b1
push cs
dec eax
add byte [ecx + 0x4964f815], cl
add byte [ecx + 0x4964fc15], cl
add bh, al
add eax, 0x496500
add al, byte [eax]
add byte [eax], al
push ebp
push esi
push edi
jne 0x42fde4
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 4
add byte [0xf3c], bh
jge 0x43109b
inc eax
mov dword [esp + 0x18], edi
mov dword [edi + 0xec], eax
cmp eax, 1
je 0x409920
cmp byte [edi + 0xfc], 0
mov byte [edi + 0x144], 0
jne fcn.004097c7
add byte [edi], cl
test dword [0x8d000002], ebx
wait
add byte [eax], al
add byte [eax], al
lea ebx, [ebx]
cmp byte [edi + 0x144], 0
jne fcn.004097c7
cmp byte [0x49728b], 0
jne 0x40960a
cmp byte [0x4a8410], 0
jne 0x4310b9
mov esi, dword [0x4825b0]
push 1
push 0
push 0
push 0
lea eax, [esp + 0x6c]
push eax
add byte [ebp + 0x506c2444], cl
call esi
test eax, eax
jne 0x4098c0
cmp byte [0x49728e], 1
je 0x4310e1
cmp dword [edi + 0xf8], 1
je 0x4097af
cmp dword [0x4a83cc], 0
jne 0x4310fe
cmp byte [0x497294], 1
je 0x4311ae
cmp dword [edi + 0x460], 0
jne 0x4311c8
cmp byte [0x4a83e4], 0
jne 0x431311
push edi
call fcn.00409540
cmp al, 1
je case.0x409800.127
cmp byte [0x4a8558], 0
jne 0x43153a
mov eax, dword [edi + 0xf8]
cmp eax, 7
je 0x4315b8
cmp eax, 8
je 0x431623
cmp eax, 9
je 0x431623
cmp eax, 2
je 0x40986e
add cl, byte [edi]
test bl, ch
add dword [eax], eax
add byte [ebx - 0x7bf0fc08], al
loop 0x40968b
cmp eax, 3
je 0x40986e
add byte [eax], al
add byte [ebx - 0x7bf0fb08], al
fld dword [ecx]
add byte [eax], al
cmp eax, 4
je 0x40986e
cmp eax, 5
je 0x40986e
cmp eax, 6
je 0x40986e
mov ecx, dword [ebp + 8]
mov dword [edi + 0xf4], ecx
mov eax, ecx
inc ecx
cmp eax, dword [0x4a8e90]
mov dword [ebp + 8], ecx
jg 0x4318f3
test eax, eax
jle 0x4318f3
shl eax, 4
add eax, dword [0x4a8ec4]
test eax, eax
je 0x4318f3
mov esi, eax
mov edx, dword [esi + 4]
xor ebx, ebx
mov dword [esp + 0x10], ebx
mov edx, dword [edx]
movsx eax, word [edx + 8]
cmp eax, ebx
jne 0x40970d
lea eax, [ebp + 8]
push eax
push esi
push edi
call fcn.0040b380
cmp byte [edi + 0xfc], 0
je 0x4095b0
jmp fcn.004097c7
cmp eax, 0x34
jne 0x4097ef
lea eax, [esp + 0x1f]
push eax
lea ecx, [esp + 0x3c]
push ecx
push esi
push edi
lea eax, [esp + 0x20]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x50], 1
mov dword [esp + 0x54], ebx
call fcn.00409a40
test eax, eax
jne 0x409754
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x10]
mov eax, dword [edx + eax*4]
cmp word [eax + 8], 0x7f
jne 0x431986
mov esi, dword [esp + 0x44]
cmp esi, ebx
je 0x409779
mov eax, dword [esi + 0xc]
dec dword [eax]
mov edx, dword [esi + 0xc]
cmp dword [edx], ebx
je 0x4319a1
push esi
call fcn.004112ef
add esp, 4
mov dword [esp + 0x44], ebx
mov eax, dword [esp + 0x40]
cmp eax, 8
je 0x4319bd
cmp eax, 0xa
je 0x4319de
cmp eax, 5
je 0x4319f5
cmp eax, 0xb
je 0x431a03
cmp eax, 0xc
jne case.0x409800.127
jmp 0x431a21
mov ecx, dword [edi]
mov eax, dword [ecx + 4]
add eax, edi
lea ecx, [esp + 0x34]
mov dword [esp + 0x34], 0
call fcn.0040d590
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
dec eax
cmp eax, 0x7e
ja case.0x409800.2
movzx eax, byte [eax + 0x4099b4]
jmp dword [eax*4 + 0x4099a0]
push edi
mov eax, esi
call fcn.00409340
jmp case.0x409800.127
xor eax, eax
lea ecx, [esp + 0xb8]
mov dword [esp + 0xb8], eax
mov dword [esp + 0xc4], eax
push ecx
lea eax, [esp + 0x14]
mov edx, esi
mov ebx, edi
mov dword [esp + 0xc4], 1
call fcn.00409030
test eax, eax
jne 0x40985d
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x10]
mov eax, dword [edx + eax*4]
cmp word [eax + 8], 0x7f
jne 0x431902
lea esi, [esp + 0xb8]
call fcn.004092c0
jmp case.0x409800.127
push 0xa
call dword [0x48215c]
xor esi, esi
cmp dword [edi + 0x2f0], esi
je 0x4098a2
call dword [0x482780]
mov ecx, dword [edi + 0x2f8]
cmp eax, ecx
jb 0x43179c
sub eax, ecx
cmp eax, dword [edi + 0x2f0]
jae 0x40992c
mov eax, dword [edi + 0xf8]
cmp eax, 3
jl case.0x409800.127
jmp 0x4317bd
cmp dword [esp + 0x60], 0x12
je 0x4310cb
lea ecx, [esp + 0x5c]
push ecx
mov ecx, 0x4a83d8
call fcn.0040d280
test eax, eax
jne 0x409907
lea edx, [esp + 0x5c]
push edx
mov ebx, 0x4a83d8
call fcn.0040d2a0
test eax, eax
jne 0x409907
lea eax, [esp + 0x5c]
inc esp
and al, 0x5c
push eax
call dword [0x4826c4]
lea ecx, [esp + 0x5c]
push ecx
call dword [0x4826bc]
push 1
push 0
push 0
push 0
lea edx, [esp + 0x6c]
push edx
call esi
test eax, eax
je 0x4095f0
jmp 0x4098c0
mov esi, edi
call fcn.00410790
jmp 0x409596
cmp dword [edi + 0xf8], 2
jne 0x4317a4
mov byte [edi + 0x144], 1
mov dword [edi + 0xf8], esi
jmp case.0x409800.127
cmp byte [edi + 0xfc], 1
je 0x4097e4
push edi
call fcn.00401aa0
push 0
call dword [0x4826b8]
mov edx, dword [0x4972c0]
push edx
call dword [0x482604]
mov esi, dword [0x4826b4]
push 0
dec eax
add byte [edx], ch
push 0
push 0
lea eax, [esp + 0x148]
push eax
call esi
test eax, eax
jle 0x4097e4
jmp 0x431a38
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add dword [edx + eax], eax
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 3
int3
sldt word [eax]
ror byte [ebx - 0x769fdbbc], 1
push esp
and al, 0x58
cmp edx, edi
je 0x42dabe
cmp eax, edx
jb 0x42dade
invalid
cmp eax, edi
jbe 0x42dacd
mov ecx, dword [esi]
mov edx, eax
mov eax, dword [ebx]
mov di, word [eax]
cmp di, word [ecx]
jne 0x40a2ef
add eax, 2
add ecx, 2
sub edx, 1
jne 0x40a2d7
jmp 0x42dacb
mov dx, word [eax]
cmp dx, word [ecx]
jb 0x42dad4
mov eax, 1
xor edi, edi
cmp eax, edi
jl 0x42daec
jle 0x42dafd
mov ecx, dword [0x4a9374]
mov dword [ebx + 0x1c], ecx
mov dword [ebx + 0x18], esi
mov dword [esi + 0x1c], edi
mov eax, dword [esp + 0x14]