Function at 0x41f07c
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, 0x608
mov eax, dword [0x44a510]
push ebx
push esi
push edi
push 9
mov ebx, eax
mov dword [ebp - 4], eax
pop eax
push 7
mov byte [ebp - 0xb0], al
lea edi, [ebp - 0x5c]
pop eax
mov byte [ebp - 0xa4], al
mov esi, 0x4026f8
push 5
pop eax
mov dword [ebp - 0xb4], ecx
or ebx, 0x175ff0c
mov ecx, eax
mov byte [ebp - 0x90], al
rep movsd dword es:[edi], dword [esi]
xor eax, eax
mov dword [ebp - 0xaf], 0x34efc9ca
mov dword [ebp - 0xab], 0xf502e598
mov word [ebp - 0xa7], 0x32f4
movsw word es:[edi], word [esi]
mov byte [ebp - 0xa5], 0x64
mov dword [ebp - 0xa3], 0xeb4dab2e
mov dword [ebp - 0x9f], 0x53d34cc6
mov dword [ebp - 0x9b], 0x1c6173ed
mov dword [ebp - 0x97], 0x8cfbc9ca
mov word [ebp - 0x93], 0x6c03
mov byte [ebp - 0x91], 0xff
mov dword [ebp - 0x8f], 0x20a66c93
mov dword [ebp - 0x8b], 0xf44615d
mov word [ebp - 0x87], 0x49c4
mov byte [ebp - 0x85], 0x81
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x14], eax
push 0x6d
mov esi, 0x1f9f
mov ecx, 0x402800
pop edx
add esi, edx
lea ecx, [ecx + 2]
cmp esi, 0xa3a
ja 0x41f176
movzx edx, word [ecx]
test edx, edx
jne 0x41f15a
xor ebx, 0x45703a55
jmp 0x41f1d2
call fcn.0041ec4f
push 0x6f
sub ebx, 0x3eeeb29c
mov edx, 0x1dc1
mov eax, 0x4027a0
pop ecx
add edx, ecx
inc eax
cmp edx, 0xad9
ja 0x41f1a2
movsx ecx, byte [eax]
test ecx, ecx
jne 0x41f18e
jmp 0x41f1b5
push ebx
push ecx
call fcn.0041edff
mov ebx, dword [ebp - 4]
add esp, 8
add ebx, 0x23b6c68f
xor ebx, 0x952eaf1b
sub ebx, 0x3e154d16
mov dword [ebp - 4], ebx
call fcn.0041ec4f
mov eax, dword [ebp - 0x14]
and ebx, 0xe2079886
xor ebx, 0x4be2eb9e
mov byte [ebp + eax - 0x1f4], al
inc eax
mov dword [ebp - 0x14], eax
cmp eax, 0x100
jb 0x41f14d
xor eax, eax
mov edi, eax
mov esi, eax
xor edx, edx
mov bl, byte [ebp + edi - 0x1f4]
push 0x16
mov eax, edi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x5c]
add eax, esi
add ecx, eax
movzx esi, cl
mov al, byte [ebp + esi - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
inc edi
mov byte [ebp + esi - 0x1f4], bl
cmp edi, 0x100
jb 0x41f1f4
xor ebx, ebx
mov dword [ebp - 0x14], ebx
mov edi, ebx
mov esi, dword [ebp - 4]
and esi, 0x318f620d
call fcn.0041ec4f
lea eax, [edi + 1]
mov edx, 0x1b3e
push 0x62
movzx edi, al
mov eax, 0x402840
pop ecx
add edx, ecx
lea eax, [eax + 2]
cmp edx, 0x48
ja 0x41f26c
movzx ecx, word [eax]
test ecx, ecx
jne 0x41f259
jmp 0x41f276
push esi
push ecx
call fcn.0041edff
add esp, 8
mov cl, byte [ebp + edi - 0x1f4]
and esi, 0x46495024
mov eax, dword [ebp - 0x14]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x14], eax
mov al, byte [ebp + eax - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
mov eax, dword [ebp - 0x14]
mov byte [ebp + eax - 0x1f4], cl
mov eax, esi
or eax, 0x8ab8526b
mov dword [ebp - 0xc], eax
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + ebx - 0xb0]
mov byte [ebp + ebx - 0x3dc], al
inc ebx
cmp ebx, 0x2c
jb 0x41f246
xor ebx, ebx
mov dword [ebp - 4], esi
push 0x62
mov byte [ebp - 0x3b0], bl
mov ecx, 0x402840
mov dword [ebp - 0x1c], 0x73f9215c
mov word [ebp - 0x18], 0xd033
pop edx
lea eax, [edx - 0x30]
push 9
pop edx
cmp ax, dx
ja 0x41f319
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x41f2ff
jmp 0x41f322
sub esi, 0x45086334
mov dword [ebp - 4], esi
or dword [ebp - 0xc], 0xea5d5d1b
lea edi, [ebp - 0xe4]
mov esi, 0x402710
mov eax, ebx
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 edi, ebx
mov byte [ebp + eax - 0x1f4], al
inc eax
cmp eax, 0x100
jb 0x41f33c
push 0xc
mov esi, ebx
pop ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1f4]
mov eax, esi
div ecx
movzx ecx, bl
push 0xc
movzx eax, byte [ebp + edx - 0xe4]
add eax, edi
add ecx, eax
movzx edi, cl
pop ecx
mov al, byte [ebp + edi - 0x1f4]
mov byte [ebp + esi - 0x1f4], al
inc esi
mov byte [ebp + edi - 0x1f4], bl
cmp esi, 0x100
jb 0x41f350
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
sub dword [ebp - 0xc], 0x12cbf026
movzx edi, al
mov cl, byte [ebp + edi - 0x1f4]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
mov byte [ebp + ebx - 0x1f4], cl
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + esi - 0x1c]
mov byte [ebp + esi - 0xec], al
inc esi
cmp esi, 6
jb 0x41f398
push 0x18
pop eax
xor ebx, ebx
mov dword [ebp - 0x6c], 0x4a
mov ecx, eax
mov byte [ebp - 0xe6], bl
mov dword [ebp - 0x68], 0x10
mov eax, ebx
mov dword [ebp - 0x64], 0xffffffbc
sub ecx, dword [ebp + eax*4 - 0x6c]
inc eax
cmp eax, 3
jl 0x41f413
mov esi, dword [ebp - 4]
mov eax, ebx
push 0x5f
mov dword [ebp - 0x44], ecx
pop edx
mov dword [ebp - 0x6c], 0x2a
mov dword [ebp - 0x68], 4
mov dword [ebp - 0x64], 0xffffff73
xor esi, 0x570ef6a3
mov dword [ebp - 0x14], esi
add edx, dword [ebp + eax*4 - 0x6c]
add esi, 0x73f91c20
inc eax
cmp eax, 3
jl 0x41f43d
mov eax, dword [0x401d40]
mov dword [ebp - 0x24], eax
mov ax, word [0x401d44]
mov word [ebp - 0x20], ax
mov eax, ebx
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x5c], 0x9cfe6234
mov dword [ebp - 0x58], 0x80c973e8
mov dword [ebp - 0x54], 0xd9b6dd1c
mov dword [ebp - 0x50], 0xed84fd45
mov dword [ebp - 0x4c], 0xb8803689
mov dword [ebp - 0x48], 0x45d63804
mov dword [ebp - 0xc], ebx
mov byte [ebp + eax - 0x1f4], al
inc eax
cmp eax, 0x100
jb 0x41f49a
mov edi, ebx
xor edx, edx
mov bl, byte [ebp + edi - 0x1f4]
push 5
mov eax, edi
or esi, 0xc7b5c4dc
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x24]
add eax, dword [ebp - 0xc]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0xc], ecx
mov al, byte [ebp + ecx - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
inc edi
mov byte [ebp + ecx - 0x1f4], bl
cmp edi, 0x100
jb 0x41f4ab
xor eax, eax
mov dword [ebp - 4], esi
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
push 0x18
mov cl, byte [ebp + edi - 0x1f4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
mov byte [ebp + ebx - 0x1f4], cl
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + esi - 0x5c]
mov byte [ebp + esi - 0x390], al
inc esi
pop eax
cmp esi, eax
jb 0x41f4fd
mov byte [ebp - 0x19], al
xor ecx, ecx
mov eax, dword [0x402720]
mov edi, ecx
mov dword [ebp - 0x24], eax
mov ax, word [0x402724]
mov word [ebp - 0x20], ax
mov eax, ecx
mov byte [ebp - 0x378], cl
mov word [ebp - 0x1c], 0xed1a
mov byte [ebp - 0x1a], 0x76
mov word [ebp - 0x18], 0xc8
mov byte [ebp + eax - 0x1f4], al
inc eax
cmp eax, 0x100
jb 0x41f580
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1f4]
push 5
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x24]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1f4]
mov byte [ebp + esi - 0x1f4], al
inc esi
mov byte [ebp + edi - 0x1f4], bl
cmp esi, 0x100
jb 0x41f591
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1f4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
mov byte [ebp + ebx - 0x1f4], cl
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + esi - 0x1c]
mov byte [ebp + esi - 0xf4], al
inc esi
cmp esi, 6
jb 0x41f5d6
push 7
pop eax
xor edx, edx
mov dword [ebp - 0x6c], 0x54
mov ecx, eax
mov byte [ebp - 0xee], dl
mov dword [ebp - 0x68], 0xc
mov eax, edx
mov dword [ebp - 0x64], 0xffffffa6
sub ecx, dword [ebp + eax*4 - 0x6c]
inc eax
cmp eax, 3
jl 0x41f64a
mov dword [ebp - 0xc], ecx
mov edi, edx
mov dword [ebp - 0x5c], 0x3ed33342
mov eax, edx
mov dword [ebp - 0x58], 0x6cc4ca1c
mov dword [ebp - 0x54], 0xdebd7bda
mov dword [ebp - 0x50], 0xefe04d3d
mov dword [ebp - 0x4c], 0x1721951f
mov dword [ebp - 0x48], 0x31b49d21
mov dword [ebp - 0xcc], 0x61655357
mov dword [ebp - 0xc8], 0x686372
mov byte [ebp + eax - 0x1f4], al
inc eax
cmp eax, 0x100
jb 0x41f699
mov esi, edx
xor edx, edx
mov bl, byte [ebp + esi - 0x1f4]
push 7
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xcc]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1f4]
mov byte [ebp + esi - 0x1f4], al
inc esi
mov byte [ebp + edi - 0x1f4], bl
cmp esi, 0x100
jb 0x41f6aa
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
push 0x18
mov cl, byte [ebp + edi - 0x1f4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
mov byte [ebp + ebx - 0x1f4], cl
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + esi - 0x5c]
mov byte [ebp + esi - 0xa0], al
inc esi
pop eax
cmp esi, eax
jb 0x41f6f2
push 6
pop ecx
mov esi, 0x402728
mov dword [ebp - 0x1c], 0x6b4f412d
lea edi, [ebp - 0x23c]
mov word [ebp - 0x18], 0xed56
rep movsd dword es:[edi], dword [esi]
xor ebx, ebx
mov byte [ebp - 0x88], bl
mov eax, ebx
movsb byte es:[edi], byte [esi]
mov edi, ebx
mov byte [ebp + eax - 0x1f4], al
inc eax
cmp eax, 0x100
jb 0x41f76e
push 0x6f
mov edx, 0x308
mov eax, 0x4027a0
pop ecx
add edx, ecx
inc eax
cmp edx, 0x21f3
ja 0x41f79e
movsx ecx, byte [eax]
test ecx, ecx
jne 0x41f78a
jmp 0x41f7b0
mov eax, dword [ebp - 4]
push eax
push ecx
call fcn.0041edff
add esp, 8
call fcn.0041ec4f
mov eax, dword [ebp - 0x14]
or eax, 0xe9006db3
push eax
push ecx
mov dword [ebp - 0x14], eax
mov dword [0x44a534], eax
call fcn.0041edff
add esp, 8
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x1f4]
push 0x18
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x23c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1f4]
mov byte [ebp + esi - 0x1f4], al
inc esi
mov byte [ebp + edi - 0x1f4], bl
cmp esi, 0x100
jb 0x41f7cc
mov ecx, dword [ebp - 0x14]
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [ecx + 0x391120e2]
and ecx, 0xe8122ef3
mov dword [ebp - 0x40], eax
mov dword [0x44a510], ecx
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1f4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
push dword [ebp - 0x40]
push ecx
call fcn.0041edff
mov al, byte [ebp + ebx - 0x1f4]
add esp, 8
mov byte [ebp + edi - 0x1f4], al
mov byte [ebp + ebx - 0x1f4], cl
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + esi - 0x1c]
mov byte [ebp + esi - 0xcc], al
inc esi
cmp esi, 6
jb 0x41f82c
push 0x19
pop ecx
xor eax, eax
mov dword [ebp - 0x1c], ecx
mov byte [ebp - 0xc6], al
mov ebx, ecx
mov dword [ebp - 0xc4], 0xb
mov dword [ebp - 0xc0], 0xffffffdd
add ebx, dword [ebp + eax*4 - 0xc4]
inc eax
cmp eax, 2
jl 0x41f8ac
push dword [ebp - 0x60]
lea ecx, [ebp - 0xec]
mov dword [ebp - 0x40], ebx
push dword [ebp - 0x44]
mov dword [ebp - 0x608], 0x22c
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x3dc]
call fcn.0041d4c4
call eax
lea ecx, [ebp - 0x608]
mov dword [ebp - 0x14], eax
push ecx
push eax
lea ecx, [ebp - 0xf4]
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x390]
call fcn.0041d4c4
call eax
cmp eax, dword [ebp - 0xc]
jne 0x4201c5
push 6
pop ecx
mov esi, 0x40200c
mov dword [ebp - 0x84], 0xb8436245
lea edi, [ebp - 0x23c]
mov dword [ebp - 0x80], 0xba8be771
rep movsd dword es:[edi], dword [esi]
xor ecx, ecx
mov dword [ebp - 0x7c], 0x3ae3592
mov dword [ebp - 0x78], 0x23417037
mov eax, ecx
mov dword [ebp - 0x74], 0x9da640b9
movsw word es:[edi], word [esi]
mov dword [ebp - 0x70], 0x4efdb24e
mov edi, ecx
mov byte [ebp + eax - 0x1f4], al
inc eax
cmp eax, 0x100
jb 0x41f959
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1f4]
push 0x19
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x23c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1f4]
mov byte [ebp + esi - 0x1f4], al
inc esi
mov byte [ebp + edi - 0x1f4], bl
cmp esi, 0x100
jb 0x41f96a
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
mov eax, dword [0x44a534]
mov dword [ebp - 4], eax
and eax, 0x13e5fe61
mov dword [ebp - 0x44], eax
lea eax, [edi + 1]
movzx edi, al
push 0x18
mov cl, byte [ebp + edi - 0x1f4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
mov byte [ebp + ebx - 0x1f4], cl
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + esi - 0x84]
mov byte [ebp + esi - 0x374], al
inc esi
pop eax
cmp esi, eax
jb 0x41f9c2
push 5
pop eax
mov ecx, eax
mov dword [ebp - 0xc], 0x31a0cc20
mov esi, 0x402744
mov word [ebp - 8], 0x9442
lea edi, [ebp - 0x5c]
xor ebx, ebx
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x35c], bl
mov eax, ebx
movsw word es:[edi], word [esi]
mov edi, ebx
mov byte [ebp + eax - 0x358], al
inc eax
cmp eax, 0x100
jb 0x41fa41
push 0x62
mov edx, 0x13ba
mov eax, 0x402840
pop ecx
add edx, ecx
lea eax, [eax + 2]
cmp edx, 0xf9f
ja 0x41fa73
movzx ecx, word [eax]
test ecx, ecx
jne 0x41fa5d
jmp 0x41fa86
push dword [ebp - 0x44]
push ecx
call fcn.0041edff
add esp, 8
and dword [ebp - 4], 0x7010dc8
call fcn.0041ec4f
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x358]
push 0x15
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x5c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x358]
mov byte [ebp + esi - 0x358], al
inc esi
mov byte [ebp + edi - 0x358], bl
cmp esi, 0x100
jb 0x41fa8d
xor eax, eax
mov esi, eax
mov ebx, eax
mov edx, eax
lea eax, [ebx + 1]
movzx ebx, al
push 0x6d
mov cl, byte [ebp + ebx - 0x358]
movzx eax, cl
mov dword [ebp - 0x44], eax
add eax, esi
movzx esi, al
mov dword [ebp - 0x60], esi
mov al, byte [ebp + esi - 0x358]
mov byte [ebp + ebx - 0x358], al
mov byte [ebp + esi - 0x358], cl
mov ecx, 0x402800
pop esi
lea eax, [esi - 0x30]
push 9
pop esi
cmp ax, si
ja 0x41fb27
add ecx, 2
movzx eax, word [ecx]
mov esi, eax
test ax, ax
jne 0x41fb0a
mov eax, dword [ebp - 4]
jmp 0x41fb32
mov eax, dword [ebp - 4]
sub eax, 0x1229ce97
mov dword [ebp - 4], eax
mov esi, dword [ebp - 0x60]
mov edi, eax
movzx eax, byte [ebp + ebx - 0x358]
and edi, 0xbf79d4fa
add eax, dword [ebp - 0x44]
movzx eax, al
mov al, byte [ebp + eax - 0x358]
xor al, byte [ebp + edx - 0xc]
mov byte [ebp + edx - 0xd4], al
inc edx
cmp edx, 6
jb 0x41fad2
mov ebx, dword [ebp - 4]
xor eax, eax
mov byte [ebp - 0xce], al
mov edx, eax
mov dword [ebp - 0xc], 0xf
mov dword [ebp - 0x6c], 0x4e
mov dword [ebp - 0x68], 0x2b
mov dword [ebp - 0x64], 0xffffff95
push 0x62
mov ecx, 0x402840
pop esi
lea eax, [esi - 0x30]
push 9
pop esi
cmp ax, si
ja 0x41fbb2
add ecx, 2
movzx eax, word [ecx]
mov esi, eax
test ax, ax
jne 0x41fb98
jmp 0x41fbb8
or edi, 0x7db066eb
or ebx, 0x8ff79c59
push ebx
push ecx
call fcn.0041edff
mov eax, dword [ebp - 0xc]
add esp, 8
sub eax, dword [ebp + edx*4 - 0x6c]
inc edx
mov dword [ebp - 0xc], eax
cmp edx, 3
jl 0x41fb90
xor edx, edx
mov eax, 0x402800
mov ecx, edx
inc ecx
lea eax, [eax + 2]
cmp ecx, 0xd7
jl 0x41fbf4
cmp word [eax], dx
jne 0x41fbe1
jmp 0x41fbf9
call fcn.0041ec4f
mov eax, ebx
or eax, 0x9c1ede36
mov dword [0x44a510], eax
lea eax, [ebp - 0x608]
and ebx, 0xf89136f5
push eax
push dword [ebp - 0x14]
lea ecx, [ebp - 0xd4]
mov dword [0x44a534], ebx
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x374]
call fcn.0041d4c4
call eax
cmp eax, dword [ebp - 0xc]
jne 0x4201c2
mov dword [ebp - 0x210], 0x5d
xor ebx, ebx
mov dword [ebp - 0x20c], 0x45
mov dword [ebp - 0x208], 0xffffff8e
push 0x34
pop esi
mov eax, ebx
sub esi, dword [ebp + eax*4 - 0x210]
inc eax
cmp eax, 3
jl 0x41fc63
mov ecx, dword [ebp - 0xb4]
call fcn.004348f7
cmp eax, esi
jbe 0x41fc93
mov edx, ecx
lea ecx, [ebp - 0x5e4]
call fcn.00434c75
mov ebx, eax
jmp 0x41fe86
mov esi, 0x40275c
mov dword [ebp - 0x3c], 0x246c3eea
lea edi, [ebp - 0x58]
mov word [ebp - 0x38], 0xe47c
push 0xd
pop eax
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x35], al
mov eax, ebx
mov byte [ebp - 0x36], 0x23
mov dword [ebp - 0x34], 0x36bea7a1
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x30], 0x20d40342
mov dword [ebp - 0x2c], 0xcaeca57
mov dword [ebp - 0x28], 0xee6db6d9
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, ebx
mov byte [ebp + eax - 0x358], al
inc eax
cmp eax, 0x100
jb 0x41fcd9
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x358]
push 0x12
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 - 0x358]
mov byte [ebp + esi - 0x358], al
inc esi
mov byte [ebp + edi - 0x358], bl
cmp esi, 0x100
jb 0x41fcea
mov edi, dword [0x44a534]
xor eax, eax
mov esi, dword [0x44a510]
mov edx, eax
mov ecx, eax
mov ebx, eax
lea eax, [ecx + 1]
mov ecx, 0x402840
movzx eax, al
mov dword [ebp - 0x60], eax
mov al, byte [ebp + eax - 0x358]
mov byte [ebp - 0xd], al
movzx eax, al
mov dword [ebp - 4], eax
add eax, edx
movzx eax, al
xor edx, edx
mov dword [ebp - 0x44], eax
mov eax, edx
add ecx, 2
inc eax
cmp eax, 0x3e8
jl 0x41fd84
cmp word [ecx], dx
jne 0x41fd65
cmp eax, 0x1e60
jle 0x41fd94
or esi, 0x384cd8e2
jmp 0x41fd9a
push esi
push ecx
call fcn.0041edff
add esp, 8
xor edi, 0xf56b0724
or esi, 0x6e9a9b5
mov dword [0x44a510], esi
and edi, 0xedbb76f7
call fcn.0041ec4f
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x60]
push 0x18
mov al, byte [ebp + edx - 0x358]
mov byte [ebp + ecx - 0x358], al
mov al, byte [ebp - 0xd]
mov byte [ebp + edx - 0x358], al
movzx eax, byte [ebp + ecx - 0x358]
add eax, dword [ebp - 4]
movzx eax, al
mov al, byte [ebp + eax - 0x358]
xor al, byte [ebp + ebx - 0x3c]
mov byte [ebp + ebx - 0x258], al
inc ebx
pop eax
cmp ebx, eax
jb 0x41fd3b
mov dword [ebp - 0x220], 0x49
lea ecx, [ebp - 0x258]
mov dword [ebp - 0x21c], 0x42
xor eax, eax
mov dword [ebp - 0x218], 3
mov dword [ebp - 0x214], 0xffffff63
movups xmm1, xmmword [ebp - 0x220]
mov dword [0x44a534], edi
mov byte [ebp - 0x240], al
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd edi, xmm1
add edi, 0xf
call fcn.0043430e
mov esi, eax
lea ecx, [ebp - 0x5e4]
mov edx, esi
call fcn.00434c75
mov ecx, esi
mov ebx, eax
call fcn.004348f7
push eax
push edi
push esi
call fcn.0043423a
add esp, 0xc
mov ecx, esi
call fcn.0041d467
test ebx, ebx
jne 0x420193
mov dword [ebp - 0x3c], 0xcff1276b
mov dword [ebp - 0x38], 0xcd0483bd
mov dword [ebp - 0x34], 0x9a4f9910
mov dword [ebp - 0x30], 0x6b8aa684
mov dword [ebp - 0x2c], 0x7a399c11
mov dword [ebp - 0x28], 0x1dbaa079
mov eax, dword [0x44a534]
and eax, 0x43ea7729
imul eax, eax, 0x4ced7f2
push eax
push ecx
call fcn.0041edff
mov eax, dword [0x402770]
add esp, 8
mov dword [ebp - 0xbc], eax
xor ecx, ecx
mov ax, word [0x402774]
mov edi, ecx
mov word [ebp - 0xb8], ax
mov eax, ecx
mov byte [ebp + eax - 0x358], al
inc eax
cmp eax, 0x100
jb 0x41fef0
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x358]
push 5
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xbc]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x358]
mov byte [ebp + esi - 0x358], al
inc esi
mov byte [ebp + edi - 0x358], bl
cmp esi, 0x100
jb 0x41ff01
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
push 0x18
mov cl, byte [ebp + edi - 0x358]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x358]
mov byte [ebp + edi - 0x358], al
mov byte [ebp + ebx - 0x358], cl
movzx eax, byte [ebp + edi - 0x358]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x358]
xor al, byte [ebp + esi - 0x3c]
mov byte [ebp + esi - 0x3ac], al
inc esi
pop eax
cmp esi, eax
jb 0x41ff49
mov esi, 0x402778
mov dword [ebp - 0x24], 0xa0873a7f
lea edi, [ebp - 0x6c]
mov byte [ebp - 0x20], 0xa9
push 7
xor ecx, ecx
movsd dword es:[edi], dword [esi]
pop eax
mov byte [ebp - 0x1f], al
mov eax, ecx
mov byte [ebp - 0x394], cl
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, ecx
mov byte [ebp + eax - 0x1f4], al
inc eax
cmp eax, 0x100
jb 0x41ffc5
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1f4]
push 0xa
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 - 0x1f4]
mov byte [ebp + esi - 0x1f4], al
inc esi
mov byte [ebp + edi - 0x1f4], bl
cmp esi, 0x100
jb 0x41ffd6
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1f4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
mov byte [ebp + ebx - 0x1f4], cl
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0xc4], al
inc esi
cmp esi, 6
jb 0x42001b
push 0x31
pop edx
push 0x3f
xor ebx, ebx
mov dword [ebp - 0x200], 0xff8f
pop esi
mov byte [ebp - 0xbe], bl
mov eax, ebx
mov dword [ebp - 0x204], esi
add edx, dword [ebp + eax*4 - 0x204]
inc eax
cmp eax, 2
jl 0x42008b
mov eax, dword [0x44a534]
mov ecx, ebx
add eax, 0x3529bc29
mov dword [ebp - 0xe0], 8
mov dword [0x44a510], eax
push 7
pop eax
mov dword [ebp - 0xe4], eax
mov eax, ebx
mov dword [ebp - 0xdc], 0xfffffff1
sub ecx, dword [ebp + eax*4 - 0xe4]
inc eax
cmp eax, 3
jl 0x4200c8
push 0x35
pop edi
mov dword [ebp - 0x1fc], 0x2c
mov eax, ebx
mov dword [ebp - 0x1f8], 0xffffff9f
add edi, dword [ebp + eax*4 - 0x1fc]
inc eax
cmp eax, 2
jl 0x4200ee
mov dword [ebp - 0x7c], esi
or edx, 0x1f0000
mov dword [ebp - 0x78], 6
mov dword [ebp - 0x74], 0x53
mov dword [ebp - 0x70], 0xffffff51
movups xmm1, xmmword [ebp - 0x7c]
push 0x18
pop eax
push dword [ebp - 0x600]
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd esi, xmm1
push ecx
push edx
lea ecx, [ebp - 0xc4]
add esi, eax
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x3ac]
call fcn.0041d4c4
call eax
mov dword [ebp - 0x44], eax
cmp eax, edi
je 0x420195
neg esi
cmp eax, esi
je 0x420195
mov eax, ebx
inc eax
cmp eax, 0x1216
jg 0x4201eb
cmp byte [eax + 0x4027a0], bl
jne 0x42016f
cmp eax, 0xde1
jg 0x4201f0
mov eax, dword [0x44a510]
lea ebx, [eax - 0x2a9f159]
jmp 0x420201
xor ebx, ebx
lea eax, [ebp - 0x608]
push eax
push dword [ebp - 0x14]
lea ecx, [ebp - 0xd4]
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x374]
call fcn.0041d4c4
call eax
cmp eax, dword [ebp - 0xc]
je 0x41fc5e
mov ebx, dword [ebp - 0x40]
push dword [ebp - 0x14]
lea ecx, [ebp - 0xcc]
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0xa0]
call fcn.0041d4c4
call eax
neg ebx
mov eax, ebx
pop edi
pop esi
pop ebx
leave
ret
call fcn.0041ec4f
call fcn.0041ec4f
mov ebx, dword [0x44a534]
lea eax, [ebx - 0x5e22b21a]
push 6
pop ecx
mov esi, 0x40200c
mov dword [ebp - 0x3c], 0xb4764471
lea edi, [ebp - 0x258]
mov dword [ebp - 0x38], 0xacafdf06
rep movsd dword es:[edi], dword [esi]
or eax, 0x733f1a63
mov dword [ebp - 0x34], 0x528e7c93
xor ecx, ecx
mov dword [ebp - 0xb4], eax
mov dword [ebp - 0x30], 0x5274704c
mov eax, ecx
mov dword [ebp - 0x2c], 0xb6bf609c
mov dword [ebp - 0x28], 0x4efdb261
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], ecx
mov byte [ebp + eax - 0x358], al
inc eax
cmp eax, 0x100
jb 0x42024f
mov esi, dword [ebp - 0xb4]
mov edi, ecx
xor edx, edx
mov cl, byte [ebp + edi - 0x358]
mov eax, edi
mov byte [ebp - 0xd], cl
div dword [ebp - 0x1c]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x258]
mov edx, 0x4027a0
add eax, dword [ebp - 0xc]
add ecx, eax
mov al, 0x6f
movzx ecx, cl
mov dword [ebp - 0xc], ecx
sub al, 0x30
cmp al, 9
ja 0x4202a3
inc edx
mov al, byte [edx]
test al, al
jne 0x420294
jmp 0x4202ab
mov ebx, esi
and ebx, 0xd434f2ea
mov al, byte [ebp + ecx - 0x358]
lea esi, [ebx + 0x600fb67d]
mov byte [ebp + edi - 0x358], al
inc edi
mov al, byte [ebp - 0xd]
mov byte [ebp + ecx - 0x358], al
cmp edi, 0x100
jb 0x420266
xor eax, eax
mov dword [ebp - 0xc], eax
mov edx, eax
mov edi, eax
lea eax, [edx + 1]
movzx edx, al
mov dword [ebp - 4], edx
mov cl, byte [ebp + edx - 0x358]
movzx eax, cl
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 0x40]
movzx eax, al
mov dword [ebp - 0xc], eax
mov al, byte [ebp + eax - 0x358]
mov byte [ebp + edx - 0x358], al
mov eax, dword [ebp - 0xc]
mov byte [ebp + eax - 0x358], cl
xor eax, eax
mov ecx, 0x402800
add ecx, 2
inc eax
cmp eax, 0x2345
je 0x420340
xor edx, edx
cmp word [ecx], dx
mov edx, dword [ebp - 4]
jne 0x42031c
cmp eax, 0x1b21
jg 0x42034e
and ebx, 0xe788241d
jmp 0x42035e
call fcn.0041ec4f
mov edx, dword [ebp - 4]
imul ebx, ebx, 0x3de7ad30
push esi
push ecx
call fcn.0041edff
add esp, 8
add ebx, 0x26ac2368
movzx eax, byte [ebp + edx - 0x358]
xor esi, 0x6e353225
add eax, dword [ebp - 0x40]
movzx eax, al
push 0x18
mov dword [0x44a534], ebx
mov al, byte [ebp + eax - 0x358]
xor al, byte [ebp + edi - 0x3c]
mov byte [ebp + edi - 0x23c], al
inc edi
pop eax
cmp edi, eax
jb 0x4202db
mov esi, 0x402784
mov dword [ebp - 0x24], 0x379dd684
lea edi, [ebp - 0xe4]
mov word [ebp - 0x20], 0xed82
xor ecx, ecx
mov byte [ebp - 0x224], cl
mov eax, ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov edi, ecx
mov byte [ebp + eax - 0x1f4], al
inc eax
cmp eax, 0x100
jb 0x4203bf
lea eax, [ebx - 0x7193bcf6]
mov esi, ecx
mov dword [0x44a510], eax
xor edx, edx
mov bl, byte [ebp + esi - 0x1f4]
push 0xd
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0xe4]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1f4]
mov byte [ebp + esi - 0x1f4], al
inc esi
mov byte [ebp + edi - 0x1f4], bl
cmp esi, 0x100
jb 0x4203db
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1f4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1f4]
mov byte [ebp + edi - 0x1f4], al
mov byte [ebp + ebx - 0x1f4], cl
movzx eax, byte [ebp + edi - 0x1f4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1f4]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0xbc], al
inc esi
cmp esi, 6
jb 0x420423
push dword [ebp - 0x14]
xor eax, eax
lea ecx, [ebp - 0xbc]
mov byte [ebp - 0xb6], al
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x23c]
call fcn.0041d4c4
call eax
mov eax, dword [ebp - 0x44]
jmp 0x4201e6