Function at 0x43cbb5
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, 0x3fc
push ebx
push esi
push edi
push 0x10
mov dword [ebp - 0x168], ecx
xor ebx, ebx
pop ecx
push 0xa
mov dword [ebp - 0x164], edx
mov eax, ebx
pop edx
mov dword [ebp - 0x160], edx
mov dword [ebp - 0x15c], 0xffffffe6
add ecx, dword [ebp + eax*4 - 0x160]
inc eax
cmp eax, 2
jl 0x43cbe7
mov esi, 0x40332c
mov dword [ebp - 0x54], ecx
lea edi, [ebp - 0x160]
mov dword [ebp - 0xac], 0x6fb0f66d
mov dword [ebp - 0xa8], 0xcef356f2
mov eax, ebx
mov dword [ebp - 0xa4], 0x1c2dd2f1
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xa0], 0xb7e8d432
mov dword [ebp - 0x9c], 0xd02f571e
mov dword [ebp - 0x98], 0xf0e30ef0
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x94], 0xa5bee3e2
mov dword [ebp - 0x90], 0x1d574c4f
mov dword [ebp - 0x8c], 0xbd22ae9f
mov dword [ebp - 0x88], 0x79fe8aeb
mov dword [ebp - 0x84], 0x8def337b
mov dword [ebp - 0x80], 0x20a06cee
mov word [ebp - 0x7c], 0x5aeb
mov byte [ebp - 0x7a], dl
mov dword [ebp - 0x79], 0x814eda54
mov dword [ebp - 0x75], 0xe051f97b
mov dword [ebp - 0x71], 0xd4c30f17
mov dword [ebp - 0x6d], 0x1b2e3d18
mov dword [ebp - 0x69], 0x569b3158
mov dword [ebp - 0x65], 0xa5cceb46
mov dword [ebp - 0x61], 0xd78b3ffa
mov dword [ebp - 0x5d], 0xa8131189
mov dword [ebp - 0x59], 0x549287dc
mov byte [ebp - 0x55], 0x9e
movsb byte es:[edi], byte [esi]
inc eax
cmp eax, 0x996
jl 0x43cce0
cmp byte [eax + 0x403338], bl
jne 0x43ccc8
mov esi, dword [0x44db78]
jmp 0x43ccf3
mov esi, dword [0x44db78]
xor esi, 0x4f89596
cmp eax, 0x5d3
jle 0x43ccfb
or esi, 0xe95e8277
jmp 0x43cd01
add esi, 0xda03be9c
xor esi, 0x88d8d684
mov eax, ebx
mov dword [ebp - 8], esi
mov byte [ebp + eax - 0x2a0], al
inc eax
cmp eax, 0x100
jb 0x43cd0c
push 7
mov edi, ebx
mov esi, ebx
pop ecx
mov dl, byte [ebp + edi - 0x2a0]
mov eax, edi
and eax, ecx
movzx ecx, dl
push 7
movzx eax, byte [ebp + eax - 0x160]
add eax, esi
add ecx, eax
movzx esi, cl
pop ecx
mov al, byte [ebp + esi - 0x2a0]
mov byte [ebp + edi - 0x2a0], al
inc edi
mov byte [ebp + esi - 0x2a0], dl
cmp edi, 0x100
jb 0x43cd22
mov esi, dword [ebp - 8]
mov edx, ebx
mov edi, ebx
mov ecx, ebx
lea eax, [edi + 1]
movzx edi, al
mov al, byte [ebp + edi - 0x2a0]
mov byte [ebp - 1], al
movzx eax, al
mov dword [ebp - 0x2c], eax
add eax, edx
movzx eax, al
mov edx, 0x403338
mov dword [ebp - 0x10], eax
mov al, 0x57
sub al, 0x30
cmp al, 9
ja 0x43cd9d
inc edx
mov al, byte [edx]
test al, al
jne 0x43cd8e
jmp 0x43cda3
xor esi, 0x222bf599
mov edx, dword [ebp - 0x10]
xor esi, 0x9a043aa
and esi, 0x8be043fe
mov al, byte [ebp + edx - 0x2a0]
mov byte [ebp + edi - 0x2a0], al
mov al, byte [ebp - 1]
mov byte [ebp + edx - 0x2a0], al
movzx eax, byte [ebp + edi - 0x2a0]
add eax, dword [ebp - 0x2c]
movzx eax, al
mov al, byte [ebp + eax - 0x2a0]
xor al, byte [ebp + ecx - 0xac]
mov byte [ebp + ecx - 0x3fc], al
inc ecx
cmp ecx, 0x58
jb 0x43cd69
mov dword [ebp - 8], esi
lea edi, [ebp - 0x160]
mov esi, 0x401654
mov byte [ebp - 0x3a4], bl
push 7
pop eax
mov byte [ebp - 0x11], al
mov eax, ebx
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x28], 0x2ae3f56b
mov dword [ebp - 0x24], 0x3c7acbdd
mov dword [ebp - 0x20], 0x5038a83c
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x1c], 0xff538431
mov dword [ebp - 0x18], 0xcb0d923f
mov word [ebp - 0x14], 0xc4ff
movsw word es:[edi], word [esi]
mov byte [ebp - 0x12], 3
mov dword [ebp - 0xc], ebx
movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x2a0], al
inc eax
cmp eax, 0x100
jb 0x43ce48
mov esi, dword [ebp - 8]
mov edi, ebx
xor edx, edx
mov bl, byte [ebp + edi - 0x2a0]
push 0xa
mov eax, edi
add esi, 0xe13b85b9
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x160]
add eax, dword [ebp - 0xc]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0xc], ecx
mov al, byte [ebp + ecx - 0x2a0]
mov byte [ebp + edi - 0x2a0], al
inc edi
mov byte [ebp + ecx - 0x2a0], bl
cmp edi, 0x100
jb 0x43ce5c
xor ebx, ebx
mov dword [ebp - 0xc], ebx
mov edi, ebx
lea eax, [ebx + 1]
imul esi, esi, 0xa2196c26
movzx ebx, al
mov eax, dword [ebp - 0xc]
mov cl, byte [ebp + ebx - 0x2a0]
and esi, 0xe5c0c4c0
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0xc], eax
mov al, byte [ebp + eax - 0x2a0]
mov byte [ebp + ebx - 0x2a0], al
mov eax, dword [ebp - 0xc]
mov byte [ebp + eax - 0x2a0], cl
movzx eax, byte [ebp + ebx - 0x2a0]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x2a0]
xor al, byte [ebp + edi - 0x28]
mov byte [ebp + edi - 0x184], al
inc edi
cmp edi, 0x18
jb 0x43cead
mov dword [ebp - 8], esi
lea edi, [ebp - 0x24]
mov esi, 0x401e04
mov dword [ebp - 0x4c], 0xdaf80bf7
xor ebx, ebx
mov dword [ebp - 0x48], 0x2ef1fbc7
mov byte [ebp - 0x16c], bl
mov eax, ebx
mov dword [ebp - 0x44], 0x6bb5565b
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x40], 0x6ff82ca4
mov dword [ebp - 0x3c], 0xec793d7f
mov dword [ebp - 0x38], 0xa3d95983
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x154], al
inc eax
cmp eax, 0x100
jb 0x43cf55
push 0x6d
pop edx
push 9
mov esi, 0x403400
pop edi
mov ecx, esi
mov dword [ebp - 0x50], edi
lea eax, [edx - 0x30]
cmp ax, di
ja 0x43cf8e
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x43cf74
mov eax, dword [ebp - 8]
jmp 0x43cf96
mov eax, dword [ebp - 8]
xor eax, 0xc20b565f
add eax, 0xef9700d
mov edx, esi
mov dword [0x44db78], eax
call fcn.0043a975
mov esi, dword [0x44db78]
mov edi, ebx
add esi, 0x2b9ce100
mov dword [ebp - 8], esi
mov dl, byte [ebp + edi - 0x154]
mov eax, edi
and eax, 0xf
movzx ecx, dl
movzx eax, byte [ebp + eax - 0x24]
add eax, ebx
add ecx, eax
movzx ebx, cl
mov al, byte [ebp + ebx - 0x154]
mov byte [ebp + edi - 0x154], al
inc edi
mov byte [ebp + ebx - 0x154], dl
cmp edi, 0x100
jb 0x43cfb8
xor ebx, ebx
mov esi, ebx
mov edi, ebx
lea eax, [esi + 1]
movzx esi, al
mov cl, byte [ebp + esi - 0x154]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x154]
mov byte [ebp + esi - 0x154], al
mov byte [ebp + ebx - 0x154], cl
movzx eax, byte [ebp + esi - 0x154]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x154]
xor al, byte [ebp + edi - 0x4c]
mov byte [ebp + edi - 0x1a0], al
inc edi
cmp edi, 0x18
jb 0x43cff7
xor ebx, ebx
mov dword [ebp - 0x18], 0x6fafe29a
mov byte [ebp - 0x188], bl
mov eax, ebx
mov byte [ebp - 0x14], 0x53
mov dword [ebp - 0x34], 0x73657268
mov dword [ebp - 0x30], 0x746c75
mov byte [ebp + eax - 0x154], al
inc eax
cmp eax, 0x100
jb 0x43d06a
or dword [ebp - 8], 0x7e8fff97
mov edi, ebx
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + edi - 0x154]
push 7
mov eax, edi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x34]
add eax, esi
add ecx, eax
movzx esi, cl
mov al, byte [ebp + esi - 0x154]
mov byte [ebp + edi - 0x154], al
inc edi
mov byte [ebp + esi - 0x154], bl
cmp edi, 0x100
jb 0x43d084
mov esi, dword [ebp - 8]
xor ebx, ebx
mov edi, 0x403390
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x10], edi
push 0x66
mov edx, 0x6b7
mov eax, edi
pop ecx
add edx, ecx
inc eax
cmp edx, 0xe11
ja 0x43d0f8
movsx ecx, byte [eax]
test ecx, ecx
jne 0x43d0de
imul esi, esi, 0x830eaebd
jmp 0x43d109
and esi, 0xece6c13
call fcn.0043a82f
xor esi, 0x5d07ba52
lea eax, [esi + 0x3ec1434e]
mov edx, 0x403400
mov dword [0x44db78], eax
call fcn.0043a975
lea eax, [ebx + 1]
mov esi, dword [0x44db78]
movzx ebx, al
add esi, 0x9df547d1
mov eax, dword [ebp - 0xc]
mov cl, byte [ebp + ebx - 0x154]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0xc], eax
mov al, byte [ebp + eax - 0x154]
mov byte [ebp + ebx - 0x154], al
mov eax, dword [ebp - 0xc]
mov byte [ebp + eax - 0x154], cl
movzx eax, byte [ebp + ebx - 0x154]
mov ecx, dword [ebp - 0x2c]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x154]
xor al, byte [ebp + ecx - 0x18]
mov byte [ebp + ecx - 0x15c], al
inc ecx
mov dword [ebp - 0x2c], ecx
cmp ecx, 5
jb 0x43d0d4
mov dword [ebp - 8], esi
lea edi, [ebp - 0x1c]
mov esi, 0x401bb4
mov dword [ebp - 0xd4], 0x4bc24cd
xor ebx, ebx
mov dword [ebp - 0xd0], 0x2a222b2a
push 7
pop ecx
movsd dword es:[edi], dword [esi]
mov eax, ebx
mov byte [ebp - 0x157], bl
mov dword [ebp - 0xcc], 0x92c2f044
mov dword [ebp - 0xc8], 0x2c72fcd3
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xc4], 0xad388381
mov dword [ebp - 0xc0], 0x2b83a2e5
mov dword [ebp - 0xbc], 0x7e2f42
movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 8]
xor esi, 0xffbbcebb
mov dword [ebp - 0xb8], 0x43118020
or esi, 0x389b4ebb
mov word [ebp - 0xb4], 0x276
mov byte [ebp - 0xb2], 5
mov byte [ebp - 0xb1], cl
mov dword [ebp - 0xb0], 0x894da99e
mov dword [ebp - 0xac], 0x9631b472
mov dword [ebp - 0xa8], 0x1012abad
mov dword [ebp - 0xa4], 0x6d469a46
mov dword [ebp - 0xa0], 0x9641f3b9
mov dword [ebp - 0x9c], 0x137b2813
mov dword [ebp - 0x98], 0x5211b402
mov dword [ebp - 0x94], 0x12d57467
mov dword [ebp - 0x90], 0x1e4b1270
mov dword [ebp - 0x8c], 0x1a93430b
mov dword [ebp - 0x88], 0x3420b0ba
mov dword [ebp - 0x84], 0x2f18dfce
mov dword [ebp - 0x80], 0x7702f29b
mov dword [ebp - 0x7c], 0x521e0d22
mov dword [ebp - 0x78], 0x1083881
mov dword [ebp - 0x74], 0xf09cefae
mov dword [ebp - 0x70], 0xec493dad
mov dword [ebp - 0x6c], 0x7a7f4740
mov dword [ebp - 0x68], 0x4887fec6
mov dword [ebp - 0x64], 0x1972d70d
mov dword [ebp - 0x60], 0xea125c1a
mov dword [ebp - 0x5c], 0x214c2933
mov dword [ebp - 0x58], 0xe0a8d924
mov dword [ebp - 8], esi
mov byte [ebp + eax - 0x3a0], al
inc eax
cmp eax, 0x100
jb 0x43d2e4
mov edi, ebx
mov esi, ebx
mov dl, byte [ebp + edi - 0x3a0]
mov eax, edi
and eax, ecx
movzx ecx, dl
push 7
movzx eax, byte [ebp + eax - 0x1c]
add eax, esi
add ecx, eax
movzx esi, cl
pop ecx
mov al, byte [ebp + esi - 0x3a0]
mov byte [ebp + edi - 0x3a0], al
inc edi
mov byte [ebp + esi - 0x3a0], dl
cmp edi, 0x100
jb 0x43d2f7
mov esi, dword [ebp - 8]
mov edi, ebx
mov edx, ebx
mov ecx, ebx
and esi, 0xed5956
lea eax, [edx + 1]
mov dword [ebp - 0x2c], 0x403400
movzx edx, al
push 0x6d
mov al, byte [ebp + edx - 0x3a0]
mov byte [ebp - 1], al
movzx eax, al
mov dword [ebp - 0xc], eax
add eax, edi
movzx edi, al
and esi, 0x4f6f5037
mov al, byte [ebp + edi - 0x3a0]
mov byte [ebp + edx - 0x3a0], al
pop eax
add eax, 0xffffffd0
cmp ax, word [ebp - 0x50]
ja 0x43d39c
mov eax, dword [ebp - 0x2c]
add eax, 2
mov dword [ebp - 0x2c], eax
push 0
pop ebx
movzx eax, word [eax]
mov dword [ebp - 0x30], eax
test ax, ax
jne 0x43d37a
jmp 0x43d3a2
xor esi, 0x940663f7
mov al, byte [ebp - 1]
xor esi, 0x441e6c0c
mov byte [ebp + edi - 0x3a0], al
movzx eax, byte [ebp + edx - 0x3a0]
add eax, dword [ebp - 0xc]
movzx eax, al
mov al, byte [ebp + eax - 0x3a0]
xor al, byte [ebp + ecx - 0xd4]
mov byte [ebp + ecx - 0x224], al
inc ecx
cmp ecx, 0x80
jb 0x43d341
mov dword [ebp - 0x1c], 0x5c
mov dword [ebp - 0x18], 0x51
mov dword [ebp - 0x14], 0xfffffee0
mov dword [ebp - 0x20], 0x57
movups xmm1, xmmword [ebp - 0x20]
push 0x44
imul eax, esi, 0x4ef9ca8e
movaps xmm0, xmm1
mov byte [ebp - 0x1a4], bl
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x18], 0x3c
movups xmm0, xmm1
mov dword [ebp - 0x14], 0xffffff35
psrldq xmm0, 4
mov dword [0x44db78], eax
paddd xmm1, xmm0
movd eax, xmm1
pop edx
push 0x4b
add eax, 0x1c
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x50], eax
mov eax, ebx
pop ecx
add ecx, dword [ebp + eax*4 - 0x1c]
inc eax
cmp eax, 3
jl 0x43d44e
mov dword [ebp - 0x30], ecx
mov eax, ebx
mov dword [ebp - 0x24], 6
mov dword [ebp - 0x20], 0x11
mov dword [ebp - 0x1c], 0x4d
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], 0xffffff58
sub ebx, dword [ebp + eax*4 - 0x24]
inc eax
cmp eax, 5
jl 0x43d47c
mov eax, dword [ebp - 0x54]
cmp dword [ebp + 8], eax
je 0x43d5cc
lea ecx, [ebp - 0x3fc]
call fcn.0043617c
mov esi, eax
lea ecx, [ebp - 0x184]
mov dword [ebp - 0x54], esi
call fcn.0043617c
push 0x66
mov edi, eax
pop ecx
sub cl, 0x30
cmp cl, 9
ja 0x43d4d0
mov eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x10], eax
mov al, byte [eax]
mov cl, al
test al, al
jne 0x43d4b2
mov eax, dword [0x44db78]
jmp 0x43d4da
mov eax, dword [0x44db78]
or eax, 0xed9a8b5f
sub eax, 0x1fccf71f
mov dword [0x44db78], eax
call fcn.0043a82f
push dword [ebp + 0x10]
lea ecx, [ebp - 0x15c]
push dword [ebp + 8]
push dword [ebp - 0x164]
push esi
mov esi, dword [ebp + 0x14]
push esi
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x1a0]
call fcn.0041e636
call eax
mov edx, dword [ebp + 0xc]
mov ecx, esi
call fcn.00436ed9
mov edx, edi
mov ecx, esi
call fcn.00436ed9
mov ecx, esi
call fcn.004369c6
mov edx, dword [ebp + 0x1c]
push eax
call fcn.0041c49c
push dword [ebp - 0x50]
mov ecx, dword [ebp - 0x168]
lea edx, [ebp - 0x224]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push esi
call fcn.0043ab3a
mov esi, dword [ebp - 0x54]
mov ecx, esi
call fcn.004369c6
push eax
push dword [ebp - 0x30]
push esi
call fcn.004360de
mov ecx, edi
call fcn.004369c6
push eax
push ebx
push edi
call fcn.004360de
add esp, 0x40
mov ecx, esi
call fcn.0041e600
push 0x6d
mov eax, 0x1098
mov ecx, 0x403400
pop edx
add eax, edx
lea ecx, [ecx + 2]
cmp eax, 0xd2a
ja 0x43d5ab
movzx edx, word [ecx]
test edx, edx
jne 0x43d58c
imul eax, dword [0x44db78], 0x2bd8c06
jmp 0x43d5ba
mov eax, dword [0x44db78]
xor eax, 0x662f8971
or eax, 0xd7e8e1a2
imul eax, eax, 0xa4ac6acb
mov ecx, edi
mov dword [0x44db78], eax
call fcn.0041e600
pop edi
pop esi
pop ebx
leave
ret