Function at 0x4104b6
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x348
push 5
xor ecx, ecx
mov dword [ebp - 0xa0], 0x31
mov dword [ebp - 0x9c], 0x16
xor eax, eax
mov dword [ebp - 0x98], 0x54
mov dword [ebp - 0x94], 0x4e
mov dword [ebp - 0x90], 0xffffff17
pop edx
sub ecx, dword [ebp + eax*4 - 0xa0]
inc eax
cmp eax, edx
jl 0x4104f8
push ebx
push esi
mov esi, dword [0x44a31c]
and esi, 0xc1b757f9
mov dword [ebp - 0x88], ecx
xor ecx, ecx
mov dword [ebp - 8], esi
push edi
mov dword [ebp - 0xb0], 0x2b
xor eax, eax
mov dword [ebp - 0xac], 0x2e
mov dword [ebp - 0xa8], 0x49
mov dword [ebp - 0xa4], 0xffffff5e
sub ecx, dword [ebp + eax*4 - 0xb0]
inc eax
cmp eax, 4
jl 0x410548
and dword [ebp - 0x14], 0
mov edi, esi
push 0x38
pop eax
mov byte [ebp - 0x4c], al
xor edi, 0x572d4a2d
mov eax, dword [0x401d38]
mov dword [ebp - 0x1c], eax
mov ax, word [0x401d3c]
mov word [ebp - 0x18], ax
xor eax, eax
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x4b], 0xb12fe802
mov dword [ebp - 0x47], 0xe7816d8a
mov dword [ebp - 0x43], 0x5284b4a8
mov dword [ebp - 0x3f], 0xc0d283eb
mov dword [ebp - 0x3b], 0x241c2c60
mov dword [ebp - 0x37], 0xf35d57d
mov dword [ebp - 0x33], 0xdae7d2cc
mov dword [ebp - 0x2f], 0xd0139676
mov dword [ebp - 0x2b], 0x63858e11
mov dword [ebp - 0x27], 0x7535692d
mov word [ebp - 0x23], 0xeea7
mov byte [ebp - 0x21], 0x5e
mov dword [ebp - 4], edi
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0x4105d1
mov esi, dword [ebp - 0x14]
xor edi, edi
xor edx, edx
mov bl, byte [ebp + edi - 0x1b8]
push 5
mov eax, edi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x1c]
add eax, esi
add ecx, eax
movzx esi, cl
mov al, byte [ebp + esi - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
inc edi
mov byte [ebp + esi - 0x1b8], bl
cmp edi, 0x100
jb 0x4105e5
and dword [ebp - 0x14], 0
mov ecx, 0x401ef8
mov esi, dword [ebp - 8]
xor ebx, ebx
mov al, 0x6e
sub al, 0x30
cmp al, 9
ja 0x410644
inc ecx
mov al, byte [ecx]
test al, al
jne 0x410632
mov esi, dword [ebp - 4]
jmp 0x41064a
or esi, 0x667d92e1
or esi, 0x8a99f9b9
mov dword [ebp - 4], esi
call fcn.0040cdc6
mov esi, dword [ebp - 0x14]
xor edi, edi
lea eax, [ebx + 1]
movzx ebx, al
mov cl, byte [ebp + ebx - 0x1b8]
movzx edx, cl
lea eax, [edx + esi]
movzx esi, al
mov al, byte [ebp + esi - 0x1b8]
mov byte [ebp + ebx - 0x1b8], al
mov byte [ebp + esi - 0x1b8], cl
movzx eax, byte [ebp + ebx - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + edi - 0x4c]
mov byte [ebp + edi - 0x218], al
inc edi
cmp edi, 0x2c
jb 0x41065d
mov eax, dword [0x401d40]
and dword [ebp - 0x14], 0
mov dword [ebp - 0x1c], eax
mov ax, word [0x401d44]
mov word [ebp - 0x18], ax
xor eax, eax
mov byte [ebp - 0x1ec], 0
mov dword [ebp - 0xc], 0x8ffe466b
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0x4106d3
mov esi, dword [ebp - 0x14]
xor edi, edi
xor edx, edx
mov bl, byte [ebp + edi - 0x1b8]
push 5
mov eax, edi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x1c]
add eax, esi
add ecx, eax
movzx esi, cl
mov al, byte [ebp + esi - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
inc edi
mov byte [ebp + esi - 0x1b8], bl
cmp edi, 0x100
jb 0x4106e7
mov esi, dword [ebp - 4]
xor edx, edx
xor ebx, ebx
xor ecx, ecx
lea eax, [ebx + 1]
mov edi, 0x13c7
movzx ebx, al
push 0x6e
mov al, byte [ebp + ebx - 0x1b8]
mov byte [ebp - 0x61], al
movzx eax, al
mov dword [ebp - 4], eax
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov eax, 0x401ef8
pop edx
add edi, edx
inc eax
cmp edi, 0x11b2
ja 0x41076c
movsx edx, byte [eax]
test edx, edx
jne 0x410758
jmp 0x410772
or esi, 0x30bc1dc0
mov eax, esi
xor eax, 0xdba26468
push ecx
mov edx, eax
mov dword [ebp - 0x14], eax
call fcn.0040cec2
mov edx, dword [ebp - 8]
add esp, 4
mov al, byte [ebp + edx - 0x1b8]
mov byte [ebp + ebx - 0x1b8], al
mov al, byte [ebp - 0x61]
mov byte [ebp + edx - 0x1b8], al
movzx eax, byte [ebp + ebx - 0x1b8]
add eax, dword [ebp - 4]
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + ecx - 0xc]
mov byte [ebp + ecx - 0xb8], al
inc ecx
cmp ecx, 4
jb 0x41072d
and dword [ebp - 8], 0
lea edi, [ebp - 0xac]
mov dword [ebp - 4], esi
mov esi, 0x401d48
push 0x38
pop eax
mov byte [ebp - 0x27], al
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x26], al
xor eax, eax
mov byte [ebp - 0xb4], 0
mov dword [ebp - 0x4c], 0x27e9e23a
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x48], 0x3539c3e9
mov dword [ebp - 0x44], 0x4350f36e
mov dword [ebp - 0x40], 0xe461bb29
movsw word es:[edi], word [esi]
mov dword [ebp - 0x3c], 0xfe029f2c
mov dword [ebp - 0x38], 0x1a2be0d7
mov dword [ebp - 0x34], 0xac844a5b
mov dword [ebp - 0x30], 0x480b4178
mov dword [ebp - 0x2c], 0xeea0717d
mov byte [ebp - 0x28], 0xb8
mov dword [ebp - 0x25], 0x11b760f3
mov byte [ebp - 0x21], 0xeb
movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0x410843
mov edi, dword [ebp - 4]
xor esi, esi
xor eax, eax
inc eax
cmp eax, 0x10f0
jl 0x41087e
cmp byte [eax + 0x401f64], 0
jne 0x410859
cmp eax, 0x170b
jle 0x410884
push ecx
mov edx, edi
call fcn.0040cec2
add esp, 4
jmp 0x410884
or edi, 0xacc5489d
xor edi, 0x849c4ad0
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
push 0xa
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xac]
add eax, dword [ebp - 8]
add ecx, eax
mov eax, dword [ebp - 0x14]
and eax, 0x509da65b
movzx ecx, cl
imul eax, eax, 0x46084433
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], eax
mov al, byte [ebp + ecx - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + ecx - 0x1b8], bl
cmp esi, 0x100
jb 0x410857
mov dword [ebp - 4], edi
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [ebx + 1]
movzx ebx, al
mov cl, byte [ebp + ebx - 0x1b8]
movzx edx, cl
lea eax, [edx + edi]
movzx edi, al
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + ebx - 0x1b8], al
mov byte [ebp + edi - 0x1b8], cl
movzx eax, byte [ebp + ebx - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x4c]
mov byte [ebp + esi - 0x1e8], al
inc esi
cmp esi, 0x2c
jb 0x4108ec
mov eax, dword [0x401d54]
and dword [ebp - 0x14], 0
mov dword [ebp - 0x6c], eax
mov ax, word [0x401d58]
mov word [ebp - 0x68], ax
xor eax, eax
mov byte [ebp - 0x1bc], 0
mov dword [ebp - 0x1c], 0x2ee3e55c
mov word [ebp - 0x18], 0x4f82
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0x410968
mov edi, dword [ebp - 0x14]
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
push 5
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x6c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + edi - 0x1b8], bl
cmp esi, 0x100
jb 0x41097c
and dword [ebp - 8], 0
xor ebx, ebx
mov edi, dword [ebp - 4]
xor esi, esi
lea eax, [ebx + 1]
movzx ebx, al
lea edx, [edi - 0x21550158]
mov dword [ebp - 4], edx
mov cl, byte [ebp + ebx - 0x1b8]
movzx eax, cl
mov dword [ebp - 0x14], eax
add eax, dword [ebp - 8]
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x1b8]
mov byte [ebp + ebx - 0x1b8], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x1b8], cl
mov ecx, 0x401f64
mov al, 0x79
sub al, 0x30
cmp al, 9
ja 0x410a17
inc ecx
mov al, byte [ecx]
test al, al
jne 0x410a08
jmp 0x410a1e
or dword [ebp - 4], 0x290c11a8
movzx eax, byte [ebp + ebx - 0x1b8]
and edi, 0x9d69eb22
add eax, dword [ebp - 0x14]
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x1c]
mov byte [ebp + esi - 0xa8], al
inc esi
cmp esi, 6
jb 0x4109c4
push 0x68
mov byte [ebp - 0xa2], 0
xor eax, eax
pop ecx
mov dword [ebp - 0xa0], 0x50
mov dword [ebp - 0x9c], 0x15
mov dword [ebp - 0x98], 8
mov dword [ebp - 0x94], 0x27
mov dword [ebp - 0x90], 0xffffffcc
sub ecx, dword [ebp + eax*4 - 0xa0]
inc eax
cmp eax, 5
jl 0x410a8c
mov esi, 0x401d5c
mov dword [ebp - 0x6c], ecx
lea edi, [ebp - 0xa0]
mov dword [ebp - 0x4c], 0x1fbee49
mov dword [ebp - 0x48], 0xf4d0871b
mov dword [ebp - 0x44], 0x678ce1f4
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x40], 0x32dcbc8e
mov dword [ebp - 0x3c], 0x477310af
mov dword [ebp - 0x38], 0x1582e4e7
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x34], 0x368ff2ff
mov dword [ebp - 0x30], 0xeeb9d09d
mov dword [ebp - 0x2c], 0xab83596a
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x28], 0xd8b884ba
mov dword [ebp - 0x24], 0xe2968980
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
xor edi, edi
xor eax, eax
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0x410aff
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
push 0x12
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xa0]
add eax, edi
add ecx, eax
movzx edi, cl
mov ecx, dword [ebp - 4]
and ecx, 0x483fbf10
imul ecx, ecx, 0x9aea1812
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + edi - 0x1b8], bl
mov dword [ebp - 4], ecx
cmp esi, 0x100
jb 0x410b10
and dword [ebp - 0x14], 0
mov ebx, 0x4f2868c4
imul eax, ecx, 0x3e9070db
xor edi, edi
xor esi, esi
sub ebx, eax
mov dword [ebp - 0xc], ebx
mov ebx, dword [ebp - 0x14]
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1b8]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
mov byte [ebp + ebx - 0x1b8], cl
movzx eax, byte [ebp + edi - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x4c]
mov byte [ebp + esi - 0x248], al
inc esi
cmp esi, 0x2c
jb 0x410b7d
push 0xe
pop ecx
mov esi, 0x401d70
mov ebx, dword [ebp - 0xc]
lea edi, [ebp - 0x58]
mov byte [ebp - 0x21c], 0
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 8], 0x91c1267d
movsb byte es:[edi], byte [esi]
xor edi, edi
xor eax, eax
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0x410bf0
mov edx, dword [ebp - 4]
xor esi, esi
add edx, 0x784a6200
mov dword [0x44a308], edx
mov ecx, 0x401f64
mov al, 0x79
sub al, 0x30
cmp al, 9
ja 0x410c26
inc ecx
mov al, byte [ecx]
test al, al
jne 0x410c17
jmp 0x410c2f
and ebx, 0xa4102c9c
mov dword [ebp - 0xc], ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
push 0x38
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x58]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + edi - 0x1b8], bl
mov ebx, dword [ebp - 0xc]
cmp esi, 0x100
jb 0x410c10
mov eax, ebx
xor edi, edi
sub eax, 0x75447102
xor ebx, ebx
mov dword [0x44a31c], eax
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1b8]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
mov byte [ebp + ebx - 0x1b8], cl
movzx eax, byte [ebp + edi - 0x1b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 8]
mov byte [ebp + esi - 0x1c], al
inc esi
cmp esi, 4
jb 0x410c81
mov eax, dword [ebp - 0x60]
lea ecx, [ebp - 0xa8]
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0xc]
push eax
push dword [ebp - 0x6c]
mov byte [ebp - 0x18], 0
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x1e8]
call fcn.0041d4c4
call eax
push eax
lea ecx, [ebp - 0xb8]
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x218]
call fcn.0041d4c4
call eax
push 0x14
pop ecx
test eax, eax
je 0x410d52
lea eax, [ebp - 8]
push eax
push 4
lea eax, [ebp - 0x6c]
push eax
push ecx
push dword [ebp - 0xc]
lea ecx, [ebp - 0x1c]
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x248]
call fcn.0041d4c4
call eax
mov ecx, dword [ebp - 0x88]
test eax, eax
cmovne ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x88], ecx
cmp dword [ebp - 0xc], 0
je 0x410feb
push 0x12
pop eax
mov word [ebp - 0x84], 0xc847
mov byte [ebp - 0x82], al
mov dword [ebp - 0x81], 0x34e08420
mov dword [ebp - 0x7d], 0x8e7c1b26
mov dword [ebp - 0x79], 0xdd57de6d
mov dword [ebp - 0x75], 0x1f4aae51
mov dword [ebp - 0x71], 0x41b26478
mov byte [ebp - 0x6d], 0x1c
mov eax, dword [0x44a308]
xor edi, edi
add eax, 0xff599eaf
or eax, 0xf22d6dc4
mov dword [ebp - 0x60], eax
mov eax, dword [0x401dac]
mov dword [ebp - 0x14], eax
mov ax, word [0x401db0]
mov word [ebp - 0x10], ax
xor eax, eax
mov byte [ebp + eax - 0x1b8], al
inc eax
cmp eax, 0x100
jb 0x410dc0
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x1b8]
push 5
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x14]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1b8]
mov byte [ebp + esi - 0x1b8], al
inc esi
mov byte [ebp + edi - 0x1b8], bl
cmp esi, 0x100
jb 0x410dd1
mov ebx, dword [ebp - 0x60]
xor edx, edx
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1b8]
movzx eax, cl
mov dword [ebp - 0x60], eax
add eax, edx
movzx edx, al
mov dword [ebp - 0x14], edx
mov al, byte [ebp + edx - 0x1b8]
mov byte [ebp + edi - 0x1b8], al
xor eax, eax
mov byte [ebp + edx - 0x1b8], cl
inc eax
cmp eax, 0x321
jg 0x410e5c
cmp byte [eax + 0x401ef8], 0
jne 0x410e49
jmp 0x410e61
call fcn.0040cdc6
imul edx, ebx, 0x587cc79f
mov dword [0x44a308], edx
push ecx
lea ebx, [edx + 0x562aa44d]
call fcn.0040cec2
movzx eax, byte [ebp + edi - 0x1b8]
add esp, 4
add eax, dword [ebp - 0x60]
mov edx, dword [ebp - 0x14]
movzx eax, al
mov al, byte [ebp + eax - 0x1b8]
xor al, byte [ebp + esi - 0x84]
mov byte [ebp + esi - 0x38], al
inc esi
cmp esi, 0x18
jb 0x410e17
push 5
pop eax
mov ecx, eax
mov dword [0x44a31c], ebx
mov esi, 0x401db4
mov byte [ebp - 0x20], 0
lea edi, [ebp - 0xa0]
mov dword [ebp - 0x60], 0xbc67640d
rep movsd dword es:[edi], dword [esi]
mov word [ebp - 0x5c], 0x9429
movsb byte es:[edi], byte [esi]
xor edi, edi
xor eax, eax
mov byte [ebp + eax - 0x348], al
inc eax
cmp eax, 0x100
jb 0x410ed7
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x348]
push 0x14
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xa0]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x348]
mov byte [ebp + esi - 0x348], al
inc esi
mov byte [ebp + edi - 0x348], bl
cmp esi, 0x100
jb 0x410ee8
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x348]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x348]
mov byte [ebp + edi - 0x348], al
mov byte [ebp + ebx - 0x348], cl
movzx eax, byte [ebp + edi - 0x348]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x348]
xor al, byte [ebp + esi - 0x60]
mov byte [ebp + esi - 0x14], al
inc esi
cmp esi, 6
jb 0x410f2e
push dword [ebp - 0xc]
mov dword [ebp - 0x9c], 0x62
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x98], 0x20
xorps xmm1, xmm1
mov dword [ebp - 0x94], 0x48
mov dword [ebp - 0x90], 0xffffff36
movups xmm0, xmmword [ebp - 0x9c]
mov byte [ebp - 0xe], 0
psubd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd esi, xmm1
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x38]
call fcn.0041d4c4
call eax
mov dword [ebp - 0xc], esi
push 0x6e
pop ecx
pop edi
pop esi
mov eax, 0x1bff
mov edx, 0x401ef8
pop ebx
add eax, ecx
inc edx
cmp eax, 0x19e1
ja 0x411014
movsx ecx, byte [edx]
test ecx, ecx
jne 0x410ffb
mov ecx, dword [0x44a308]
jmp 0x41102b
call fcn.0040cdc6
mov ecx, dword [0x44a308]
xor ecx, 0xf04f1948
mov dword [0x44a308], ecx
mov eax, dword [ebp - 0x88]
add ecx, 0x40bfa3f7
mov dword [0x44a31c], ecx
leave
ret