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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2a8
xor eax, eax
mov dword [ebp - 0xa4], 0x19
push 0x1e
pop edx
mov dword [ebp - 0xa0], 0x31
mov ecx, eax
mov dword [ebp - 0x9c], 0xffffff98
mov dword [ebp - 0x98], eax
add edx, dword [ebp + ecx*4 - 0xa4]
inc ecx
cmp ecx, 3
jl 0x42e267
push esi
push edi
mov esi, 0x4028d4
mov dword [ebp - 0xc0], edx
lea edi, [ebp - 0x18]
mov dword [ebp - 0x6c], 0xa4958229
mov dword [ebp - 0x68], 0x10083d5a
mov ecx, eax
mov dword [ebp - 0x64], 0xaaa6bd08
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x60], 0x64b4aa46
mov dword [ebp - 0x5c], 0x559fb311
mov dword [ebp - 0x58], 0x15a27ea5
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, eax
mov byte [ebp + ecx - 0x1ec], cl
inc ecx
cmp ecx, 0x100
jb 0x42e2b7
mov esi, eax
mov dword [ebp - 0x54], 0x402dd0
xor edx, edx
mov dword [ebp - 0x90], 0xa
mov eax, esi
mov cl, byte [ebp + esi - 0x1ec]
div dword [ebp - 0x90]
mov byte [ebp - 1], cl
movzx ecx, cl
push 0x41
movzx eax, byte [ebp + edx - 0x18]
mov edx, 0x9e3
add eax, edi
add ecx, eax
movzx edi, cl
pop ecx
mov al, byte [ebp + edi - 0x1ec]
mov byte [ebp + esi - 0x1ec], al
mov eax, 0x402dd0
add edx, ecx
lea eax, [eax + 2]
cmp edx, 0x1436
ja 0x42e333
movzx ecx, word [eax]
test ecx, ecx
jne 0x42e318
mov eax, dword [0x44d90c]
jmp 0x42e33d
mov eax, dword [0x44d90c]
xor eax, 0xd11e2db4
xor eax, 0xffd936ed
or eax, 0x70501489
mov dword [0x44d90c], eax
call fcn.0042c70c
mov al, byte [ebp - 1]
inc esi
mov byte [ebp + edi - 0x1ec], al
cmp esi, 0x100
jb 0x42e2d0
mov ecx, dword [0x44d90c]
xor esi, esi
mov edx, esi
mov dword [ebp - 0x90], 0x402da0
mov edi, esi
lea eax, [edi + 1]
mov dword [ebp - 0xc], 0x6d
movzx edi, al
mov al, byte [ebp + edi - 0x1ec]
mov byte [ebp - 1], al
movzx eax, al
mov dword [ebp - 0x44], eax
add eax, edx
movzx edx, al
mov dword [ebp - 8], edx
mov al, byte [ebp + edx - 0x1ec]
mov edx, 0x1cc0
mov byte [ebp + edi - 0x1ec], al
mov eax, 0x402da0
jmp 0x42e3c0
mov edx, dword [ebp - 0x4c]
add edx, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0x4c], edx
cmp edx, 0x77b
ja 0x42e3de
movsx edx, byte [eax]
mov dword [ebp - 0xc], edx
test edx, edx
mov edx, dword [ebp - 8]
jne 0x42e3bd
jmp 0x42e3f2
call fcn.0042c70c
mov ecx, dword [0x44d90c]
mov edx, dword [ebp - 8]
sub ecx, 0x252bbe18
mov al, byte [ebp - 1]
xor ecx, 0x1e8d48b7
mov byte [ebp + edx - 0x1ec], al
add ecx, 0x66ea7e02
movzx eax, byte [ebp + edi - 0x1ec]
add eax, dword [ebp - 0x44]
movzx eax, al
mov dword [0x44d90c], ecx
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + esi - 0x6c]
mov byte [ebp + esi - 0x208], al
inc esi
cmp esi, 0x18
jb 0x42e37e
xor eax, eax
mov edx, 0x402c40
mov byte [ebp - 0x1f0], al
mov esi, eax
inc esi
lea edx, [edx + 2]
cmp esi, 0xd6d
jg 0x42e45a
cmp word [edx], ax
jne 0x42e447
jmp 0x42e460
or ecx, 0xe6e1825
lea eax, [ecx - 0x3e44707]
or eax, 0xe1f71e78
mov dword [0x44d90c], eax
call fcn.0042c70c
mov esi, 0x4028e0
mov dword [ebp - 0x80], 0x58c0a14a
lea edi, [ebp - 0x14]
mov dword [ebp - 0x7c], 0xac7ba5e8
push 0xe
pop eax
movsd dword es:[edi], dword [esi]
mov edx, 0x348
push 0x73
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x59], al
mov eax, 0x402c04
movsw word es:[edi], word [esi]
mov dword [ebp - 0x78], 0xeef45457
mov dword [ebp - 0x74], 0x34a362e4
mov dword [ebp - 0x70], 0xe5b36a47
mov dword [ebp - 0x6c], 0x80bc2f98
mov dword [ebp - 0x68], 0x6033623d
mov dword [ebp - 0x64], 0x716842ad
mov dword [ebp - 0x60], 0x31c66307
mov word [ebp - 0x5c], 0x6da6
mov byte [ebp - 0x5a], 0x12
mov dword [ebp - 0x58], 0x28c8ed5e
movsb byte es:[edi], byte [esi]
pop ecx
add edx, ecx
inc eax
cmp edx, 0x14e7
ja 0x42e500
movsx ecx, byte [eax]
test ecx, ecx
jne 0x42e4e7
mov eax, dword [0x44d90c]
jmp 0x42e50a
mov eax, dword [0x44d90c]
add eax, 0x495803a2
add eax, 0x23b67b08
mov dword [0x44d90c], eax
call fcn.0042c70c
mov esi, dword [0x44d90c]
xor eax, eax
mov dword [ebp - 0xc], eax
mov ecx, eax
add esi, 0x3ba8cb00
mov byte [ebp + ecx - 0x1ec], cl
inc ecx
cmp ecx, 0x100
jb 0x42e52c
mov edi, eax
mov dword [ebp - 0x4c], 6
xor edx, edx
mov cl, byte [ebp + edi - 0x1ec]
mov eax, edi
mov byte [ebp - 1], cl
div dword [ebp - 0x4c]
movzx ecx, cl
sub esi, 0xf4fce20
movzx eax, byte [ebp + edx - 0x14]
add eax, dword [ebp - 0xc]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0xc], ecx
mov al, byte [ebp + ecx - 0x1ec]
mov byte [ebp + edi - 0x1ec], al
inc edi
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x1ec], al
cmp edi, 0x100
jb 0x42e545
xor eax, eax
mov dword [ebp - 0x40], esi
mov dword [ebp - 8], eax
mov esi, eax
mov edi, eax
lea eax, [esi + 1]
movzx esi, al
mov eax, dword [ebp - 8]
mov cl, byte [ebp + esi - 0x1ec]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + esi - 0x1ec], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x1ec], cl
movzx eax, byte [ebp + esi - 0x1ec]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + edi - 0x80]
mov byte [ebp + edi - 0x2a8], al
inc edi
cmp edi, 0x2c
jb 0x42e59c
xor eax, eax
mov dword [ebp - 0x14], 0xfbd488a5
push 0x41
mov byte [ebp - 0x27c], al
mov edi, 0x1b91
mov word [ebp - 0x10], 0xa3e3
mov ecx, 0x402dd0
pop edx
add edi, edx
lea ecx, [ecx + 2]
cmp edi, 0x14b9
ja 0x42e62c
movzx edx, word [ecx]
test edx, edx
jne 0x42e616
jmp 0x42e633
or dword [ebp - 0x40], 0xf1e41ea7
mov esi, 0x401ee0
mov dword [ebp - 0xc], eax
lea edi, [ebp - 0x30]
mov ecx, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x40]
and esi, 0x22162401
or esi, 0x4c0ca42
sub esi, 0x34912ba2
mov dword [ebp - 0x40], esi
mov byte [ebp + ecx - 0x1ec], cl
inc ecx
cmp ecx, 0x100
jb 0x42e65b
mov edi, eax
mov dword [ebp - 0x44], 0xb
xor edx, edx
mov cl, byte [ebp + edi - 0x1ec]
mov eax, edi
mov byte [ebp - 1], cl
div dword [ebp - 0x44]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x30]
add eax, dword [ebp - 0xc]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0xc], ecx
mov al, byte [ebp + ecx - 0x1ec]
mov byte [ebp + edi - 0x1ec], al
inc edi
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x1ec], al
cmp edi, 0x100
jb 0x42e674
xor eax, eax
mov dword [ebp - 8], eax
mov esi, eax
mov edi, eax
lea eax, [esi + 1]
movzx esi, al
mov eax, dword [ebp - 8]
push 6
mov cl, byte [ebp + esi - 0x1ec]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + esi - 0x1ec], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x1ec], cl
movzx eax, byte [ebp + esi - 0x1ec]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + edi - 0x14]
mov byte [ebp + edi - 0xa0], al
inc edi
pop eax
cmp edi, eax
jb 0x42e6c2
mov esi, dword [ebp - 0x40]
mov ecx, 0x402c40
push 0x52
pop edx
push 9
pop edi
lea eax, [edx - 0x30]
cmp ax, di
ja 0x42e741
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x42e72a
jmp 0x42e747
and esi, 0xa8634742
or esi, 0x2cda46f
mov dword [ebp - 0x18], 0x2b
xor ecx, ecx
mov dword [ebp - 0x14], 0xc
mov byte [ebp - 0x9a], cl
mov edx, ecx
mov dword [ebp - 0x10], 0xffffffc9
mov eax, ecx
sub edx, dword [ebp + eax*4 - 0x18]
inc eax
cmp eax, 3
jl 0x42e76e
push 0x2f
mov dword [ebp - 0xa8], edx
mov eax, ecx
pop edx
mov dword [ebp - 0x14], 0x49
mov dword [ebp - 0x10], 0xffffff88
add edx, dword [ebp + eax*4 - 0x14]
inc eax
cmp eax, 2
jl 0x42e791
xorps xmm1, xmm1
mov dword [ebp - 0x64], 0x21
mov dword [ebp - 0x60], 0x11
xorps xmm2, xmm2
mov dword [ebp - 0x5c], 0x1a
mov dword [ebp - 0x58], 0xffffffb4
movups xmm0, xmmword [ebp - 0x64]
push 0xe
pop eax
psubd xmm1, xmm0
mov dword [ebp - 0x64], eax
movaps xmm0, xmm1
mov dword [ebp - 0x60], 0x1b
psrldq xmm0, 8
mov eax, ecx
paddd xmm1, xmm0
mov dword [ebp - 0x58], 0xffffffd2
movups xmm0, xmm1
mov dword [ebp - 0xec], edx
psrldq xmm0, 4
mov edx, ecx
paddd xmm1, xmm0
mov dword [ebp - 0x38], 0x42
push 5
pop edi
movd dword [ebp - 0xe8], xmm1
xorps xmm1, xmm1
mov dword [ebp - 0x5c], edi
movups xmm0, xmmword [ebp - 0x64]
mov dword [ebp - 0x34], 0x2a
mov dword [ebp - 0x30], 0x4e
psubd xmm1, xmm0
mov dword [ebp - 0x2c], 0x37
movaps xmm0, xmm1
mov dword [ebp - 0x28], 0xffffff0f
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd dword [ebp - 0xe4], xmm1
sub edx, dword [ebp + eax*4 - 0x38]
inc eax
cmp eax, edi
jl 0x42e857
push 0x24
mov dword [ebp - 0xd0], edx
pop edx
mov dword [ebp - 0x34], 0x17
mov dword [ebp - 0x30], 0x5c
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x28], 0xffffff23
movups xmm1, xmmword [ebp - 0x34]
push 0xb
mov dword [ebp - 0x10], 0xffffffd1
paddd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, 0x46
or esi, 0x99226caf
mov dword [ebp - 0xcc], eax
pop eax
mov dword [ebp - 0x14], eax
mov eax, ecx
add edx, dword [ebp + eax*4 - 0x14]
inc eax
cmp eax, 2
jl 0x42e8c3
push 0x5f
pop edi
push 0x41
mov dword [ebp - 0xac], edx
pop edx
lea eax, [edx - 0x30]
push 9
pop edx
cmp ax, dx
ja 0x42e8f9
mov eax, dword [ebp - 0x54]
add eax, 2
mov dword [ebp - 0x54], eax
movzx eax, word [eax]
mov edx, eax
test ax, ax
jne 0x42e8d9
jmp 0x42e8ff
add esi, 0x65a2b477
or esi, 0x846d5e79
mov dword [ebp - 0x18], 0x50
mov dword [ebp - 0x14], 0x5e
mov dword [ebp - 0x10], 0x2f3
add edi, dword [ebp + ecx*4 - 0x18]
inc ecx
cmp ecx, 3
jl 0x42e91a
push 0x6d
mov dword [ebp - 0xb0], edi
mov edx, 0x24f1
mov eax, 0x402da0
pop ecx
add edx, ecx
inc eax
cmp edx, 0x9bd
ja 0x42e94b
movsx ecx, byte [eax]
test ecx, ecx
jne 0x42e937
jmp 0x42e951
add esi, 0x2eb1cbc0
lea eax, [esi + 0x741d9443]
imul eax, eax, 0x52673f14
mov dword [0x44d90c], eax
call fcn.0042c70c
xorps xmm1, xmm1
mov dword [ebp - 0x34], 0x2f
mov dword [ebp - 0x30], 0x1d
mov esi, 0xf3c
mov dword [ebp - 0x2c], 0x37
xorps xmm2, xmm2
mov dword [ebp - 0x28], 0x337d
mov edx, 0x924
movups xmm0, xmmword [ebp - 0x34]
push 0x1e
pop ecx
psubd xmm1, xmm0
mov dword [ebp - 0x2c], ecx
movaps xmm0, xmm1
mov dword [ebp - 0x34], 0x45
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x30], 0x18
movups xmm0, xmm1
mov dword [ebp - 0x28], 0xdbd
psrldq xmm0, 4
paddd xmm1, xmm0
mov dword [ebp - 0x38], ecx
movups xmm0, xmmword [ebp - 0x34]
push 0xb
movd eax, xmm1
xorps xmm1, xmm1
psubd xmm1, xmm0
mov dword [ebp - 0x30], 2
movaps xmm0, xmm1
mov dword [ebp - 0x2c], 0x3a
psrldq xmm0, 8
add eax, 0x3800
paddd xmm1, xmm0
mov dword [ebp - 0xb4], eax
movups xmm0, xmm1
mov dword [ebp - 0x28], 0x7bb
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, esi
mov dword [ebp - 0xb8], eax
pop eax
mov dword [ebp - 0x34], eax
xor eax, eax
push 5
mov ecx, eax
pop edi
sub edx, dword [ebp + ecx*4 - 0x38]
inc ecx
cmp ecx, edi
jl 0x42ea31
mov dword [ebp - 0x34], 0x5a
lea edi, [ebp - 0x30]
mov dword [ebp - 0x30], 0x2c
movaps xmm1, xmm2
mov dword [ebp - 0x2c], 0x3d
mov dword [ebp - 0x28], 0xd75
movups xmm0, xmmword [ebp - 0x34]
push 0xb
mov dword [ebp - 0xbc], edx
psubd xmm1, xmm0
mov dword [ebp - 0x24], 0xd36833c0
movaps xmm0, xmm1
mov dword [ebp - 0x20], 0xe0da9777
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x1b], 0x70205f50
movups xmm0, xmm1
mov dword [ebp - 0x17], 0x9864339d
psrldq xmm0, 4
paddd xmm1, xmm0
mov dword [ebp - 0x13], 0xab85fb73
movd ecx, xmm1
mov word [ebp - 0xf], 0x8a03
mov byte [ebp - 0xd], 0x22
add ecx, esi
mov dword [ebp - 0x54], eax
mov esi, 0x401e2c
mov dword [ebp - 0x94], ecx
pop ecx
mov byte [ebp - 0x1c], cl
mov ecx, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov byte [ebp + ecx - 0x1ec], cl
inc ecx
cmp ecx, 0x100
jb 0x42eace
mov edi, dword [0x44d90c]
mov esi, eax
xor edx, edx
mov cl, byte [ebp + esi - 0x1ec]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x44]
movzx ecx, cl
or edi, 0x55cbc1e
movzx eax, byte [ebp + edx - 0x30]
add eax, dword [ebp - 0x54]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0x54], ecx
mov al, byte [ebp + ecx - 0x1ec]
mov byte [ebp + esi - 0x1ec], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x1ec], al
cmp esi, 0x100
jb 0x42eae6
xor eax, eax
mov dword [0x44d90c], edi
mov dword [ebp - 8], eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 8]
mov cl, byte [ebp + edi - 0x1ec]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + edi - 0x1ec], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x1ec], cl
movzx eax, byte [ebp + edi - 0x1ec]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x224], al
inc esi
cmp esi, 0x18
jb 0x42eb40
mov edi, dword [0x44d90c]
xor eax, eax
mov ecx, eax
inc ecx
cmp ecx, 0x1b8b
je 0x42ebc3
cmp byte [ecx + 0x402da0], al
jne 0x42eba2
cmp ecx, 0x10c2
jg 0x42ebd4
lea ecx, [edi + 0x5e0ff3f9]
jmp 0x42ebe7
call fcn.0042c837
and edi, 0x57a0168
mov dword [0x44d90c], edi
call fcn.0042c70c
mov ecx, dword [0x44d90c]
and ecx, 0xa7aa24e6
xor eax, eax
mov esi, 0x401dfc
mov byte [ebp - 0x20c], al
lea edi, [ebp - 0x14]
mov dword [ebp - 0x3c], 0x3699aae3
and ecx, 0xc4d22cde
mov dword [ebp - 0x38], 0x2b48e311
push 0xe
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x44], ecx
pop ecx
mov byte [ebp - 0x2e], cl
movsw word es:[edi], word [esi]
push 9
pop ecx
mov byte [ebp - 0x2b], cl
mov ecx, eax
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x34], 0x94943147
mov edi, eax
mov word [ebp - 0x30], 0x78f4
mov word [ebp - 0x2d], 0xb6ed
mov dword [ebp - 0x2a], 0x67d8acd8
mov word [ebp - 0x26], 0xc6fc
mov byte [ebp + ecx - 0x1ec], cl
inc ecx
cmp ecx, 0x100
jb 0x42ec40
mov esi, eax
xor edx, edx
mov cl, byte [ebp + esi - 0x1ec]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x4c]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x14]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1ec]
mov byte [ebp + esi - 0x1ec], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + edi - 0x1ec], al
cmp esi, 0x100
jb 0x42ec52
mov edx, dword [ebp - 0x44]
xor eax, eax
mov dword [ebp - 8], eax
mov ecx, eax
mov esi, eax
lea eax, [ecx + 1]
movzx edi, al
push 0x52
mov dword [ebp - 0x4c], edi
mov cl, byte [ebp + edi - 0x1ec]
movzx eax, cl
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 8]
add eax, dword [ebp - 0x44]
add edx, 0x7e285df1
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + edi - 0x1ec], al
mov edi, 0x2017
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x1ec], cl
mov eax, 0x402c40
pop ecx
add edi, ecx
lea eax, [eax + 2]
cmp edi, 0x75c
ja 0x42ed02
movzx ecx, word [eax]
test ecx, ecx
jne 0x42ecec
jmp 0x42ed08
and edx, 0x26a3181a
xor edx, 0x9b77d140
add edx, 0x323b5b1a
mov dword [0x44d90c], edx
call fcn.0042c70c
mov ecx, dword [ebp - 0x4c]
movzx eax, byte [ebp + ecx - 0x1ec]
add eax, dword [ebp - 0x44]
movzx eax, al
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + esi - 0x3c]
mov byte [ebp + esi - 0x240], al
inc esi
cmp esi, 0x18
jae 0x42ed53
mov edx, dword [0x44d90c]
jmp 0x42ec9f
mov esi, 0x401628
mov dword [ebp - 0x88], 0xd6cf5697
lea edi, [ebp - 0x34]
mov byte [ebp - 0x84], 0xb1
xor eax, eax
mov byte [ebp - 0x228], al
mov ecx, eax
movsd dword es:[edi], dword [esi]
mov dword [ebp - 8], eax
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 esi, dword [0x44d90c]
add esi, 0x6019e8bf
mov byte [ebp + ecx - 0x1ec], cl
inc ecx
cmp ecx, 0x100
jb 0x42ed8b
mov edi, eax
xor edx, edx
mov cl, byte [ebp + edi - 0x1ec]
mov eax, edi
mov byte [ebp - 1], cl
div dword [ebp - 0x50]
movzx ecx, cl
push 0x52
movzx eax, byte [ebp + edx - 0x34]
add eax, dword [ebp - 8]
add ecx, eax
movzx eax, cl
mov ecx, 0x402c40
mov dword [ebp - 8], eax
pop edx
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + edi - 0x1ec], al
lea eax, [edx - 0x30]
push 9
pop edx
cmp ax, dx
ja 0x42edf1
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x42edd7
jmp 0x42edf7
sub esi, 0x502ee787
mov eax, dword [ebp - 8]
add esi, 0x751d5978
mov cl, byte [ebp - 1]
inc edi
mov byte [ebp + eax - 0x1ec], cl
cmp edi, 0x100
jb 0x42ed9d
xor eax, eax
mov dword [ebp - 0xc], eax
mov edi, eax
mov dword [ebp - 8], eax
push 0x6d
mov edx, 0x1f15
mov eax, 0x402da0
pop ecx
add edx, ecx
inc eax
cmp edx, 0xa2c
ja 0x42ee3e
movsx ecx, byte [eax]
test ecx, ecx
jne 0x42ee2a
jmp 0x42ee49
sub esi, 0x284c2ea4
call fcn.0042c837
imul esi, esi, 0x1d4a5e
or esi, 0xbb99cbc5
mov dword [ebp - 0x40], esi
call fcn.0042c837
mov eax, dword [ebp - 8]
inc eax
movzx eax, al
mov dword [ebp - 8], eax
mov esi, dword [ebp - 8]
push 5
mov cl, byte [ebp + eax - 0x1ec]
mov eax, dword [ebp - 0xc]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0xc], eax
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + esi - 0x1ec], al
mov eax, dword [ebp - 0xc]
mov byte [ebp + eax - 0x1ec], cl
mov eax, esi
mov esi, dword [ebp - 0x40]
movzx eax, byte [ebp + eax - 0x1ec]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + edi - 0x88]
mov byte [ebp + edi - 0xd8], al
inc edi
pop eax
cmp edi, eax
jb 0x42ee1d
mov dword [ebp - 0x34], 0x2b
xor edx, edx
mov dword [ebp - 0x30], 2
xorps xmm2, xmm2
mov dword [ebp - 0x2c], 0x37
mov ecx, edx
mov dword [ebp - 0x28], 0xffffff99
movups xmm1, xmmword [ebp - 0x34]
push 5
mov byte [ebp - 0xd3], dl
movaps xmm0, xmm1
mov dword [ebp - 0x38], 0x2e
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x34], 0x56
movups xmm0, xmm1
mov dword [ebp - 0x30], 0x57
psrldq xmm0, 4
paddd xmm1, xmm0
mov dword [ebp - 0x2c], 0x36
movd eax, xmm1
mov dword [ebp - 0x28], 0xfffffeef
pop esi
add eax, 3
mov dword [ebp - 0x54], eax
mov eax, edx
sub ecx, dword [ebp + eax*4 - 0x38]
inc eax
cmp eax, esi
jl 0x42ef41
mov dword [ebp - 0x34], 0x23
lea edi, [ebp - 0x38]
mov dword [ebp - 0x30], 0x63
movaps xmm1, xmm2
mov dword [ebp - 0x2c], 0x50
mov esi, 0x4028e8
mov dword [ebp - 0x28], 0xffffff6a
movups xmm0, xmmword [ebp - 0x34]
push 0x3a
mov dword [ebp - 0x34], 0x3f
psubd xmm1, xmm0
mov dword [ebp - 0x30], 0x1a
movaps xmm0, xmm1
mov dword [ebp - 0x28], 0x55
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0xc4], ecx
movups xmm0, xmm1
mov dword [ebp - 0x24], 0x7394b787
psrldq xmm0, 4
paddd xmm1, xmm0
mov dword [ebp - 0x20], 0xf0712194
pop ecx
mov dword [ebp - 0x2c], ecx
movups xmm0, xmmword [ebp - 0x34]
movsd dword es:[edi], dword [esi]
movd eax, xmm1
paddd xmm2, xmm0
mov byte [ebp - 0x1c], 0x8a
movaps xmm0, xmm2
mov byte [ebp - 0x1b], cl
psrldq xmm0, 8
add eax, 0x48
paddd xmm2, xmm0
movsd dword es:[edi], dword [esi]
movups xmm0, xmm2
mov dword [ebp - 0xc8], eax
psrldq xmm0, 4
paddd xmm2, xmm0
mov dword [ebp - 0x1a], 0x8cd4ced3
movsd dword es:[edi], dword [esi]
movd eax, xmm2
push 0xb
mov dword [ebp - 0x16], 0x4a74ee0f
add eax, 0x1c
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x88], eax
pop eax
mov byte [ebp - 0xf], al
mov eax, edx
mov word [ebp - 0x12], 0x932a
mov byte [ebp - 0x10], 0x10
mov word [ebp - 0xe], 0x435a
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0xc], edx
mov byte [ebp + eax - 0x1ec], al
inc eax
cmp eax, 0x100
jb 0x42f02f
mov esi, dword [ebp - 0x40]
mov edi, edx
mov cl, byte [ebp + edi - 0x1ec]
mov eax, edi
and eax, 0xf
mov byte [ebp - 1], cl
movzx ecx, cl
movzx eax, byte [ebp + eax - 0x38]
add eax, dword [ebp - 0xc]
add ecx, eax
mov eax, edx
movzx ecx, cl
mov dword [ebp - 0xc], ecx
inc eax
cmp eax, 0x1a16
je 0x42f07a
cmp byte [eax + 0x402c04], 0
jne 0x42f067
jmp 0x42f08a
call fcn.0042c837
mov ecx, dword [ebp - 0xc]
and esi, 0x7196f713
xor edx, edx
mov al, byte [ebp + ecx - 0x1ec]
xor esi, 0xf3bffdbf
mov byte [ebp + edi - 0x1ec], al
or esi, 0xe0bea807
mov al, byte [ebp - 1]
inc edi
mov byte [ebp + ecx - 0x1ec], al
cmp edi, 0x100
jb 0x42f043
mov dword [ebp - 0x40], esi
mov edi, edx
mov dword [ebp - 0xc], edx
mov esi, edx
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 0xc]
mov cl, byte [ebp + edi - 0x1ec]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0xc], eax
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + edi - 0x1ec], al
mov eax, dword [ebp - 0xc]
mov byte [ebp + eax - 0x1ec], cl
movzx eax, byte [ebp + edi - 0x1ec]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x25c], al
inc esi
cmp esi, 0x18
jb 0x42f0c1
mov esi, 0x4028fc
mov dword [ebp - 0x24], 0x7444f3be
lea edi, [ebp - 0x34]
mov dword [ebp - 0x20], 0xcee7c714
xor eax, eax
mov dword [ebp - 0x1c], 0x861798c1
push 0xd
movsd dword es:[edi], dword [esi]
pop ecx
mov dword [ebp - 0x50], ecx
mov byte [ebp - 0x16], cl
mov ecx, eax
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x244], al
mov word [ebp - 0x18], 0x4b62
mov dword [ebp - 0x15], 0x443edae2
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x11], 0xeb391fbc
mov byte [ebp - 0xd], 0x5b
mov dword [ebp - 0x4c], eax
movsw word es:[edi], word [esi]
mov edi, dword [ebp - 0x40]
and edi, 0xeecaa877
mov byte [ebp + ecx - 0x1ec], cl
inc ecx
cmp ecx, 0x100
jb 0x42f172
xor edi, 0xb8478671
mov esi, eax
mov dword [ebp - 0x40], edi
xor edx, edx
mov cl, byte [ebp + esi - 0x1ec]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x50]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x34]
add eax, dword [ebp - 0x4c]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0x4c], ecx
mov al, byte [ebp + ecx - 0x1ec]
mov byte [ebp + esi - 0x1ec], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x1ec], al
cmp esi, 0x100
jb 0x42f18d
xor eax, eax
mov dword [ebp - 0xc], eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 0xc]
mov cl, byte [ebp + edi - 0x1ec]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0xc], eax
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + edi - 0x1ec], al
mov eax, dword [ebp - 0xc]
mov byte [ebp + eax - 0x1ec], cl
movzx eax, byte [ebp + edi - 0x1ec]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x278], al
inc esi
cmp esi, 0x18
jb 0x42f1db
mov eax, dword [0x40290c]
xor ecx, ecx
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x4c], eax
mov ax, word [0x402910]
mov word [ebp - 0x48], ax
mov eax, ecx
mov byte [ebp - 0x260], cl
mov dword [ebp - 0x14], 0x6552f0fd
mov byte [ebp - 0x10], 0x86
mov dword [ebp - 0xc], ecx
mov byte [ebp + eax - 0x1ec], al
inc eax
cmp eax, 0x100
jb 0x42f260
mov eax, ecx
xor esi, esi
mov dword [ebp - 8], eax
mov cl, byte [ebp + eax - 0x1ec]
xor edx, edx
div dword [ebp - 0x5c]
mov byte [ebp - 1], cl
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x4c]
add eax, dword [ebp - 0xc]
add ecx, eax
movzx eax, cl
mov ecx, dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp + ecx - 0x1ec], al
mov eax, esi
mov ecx, 0x402c40
inc eax
lea ecx, [ecx + 2]
mov dword [ebp - 0x50], eax
cmp eax, 0x1df6
jl 0x42f2c5
cmp word [ecx], si
jne 0x42f2b0
jmp 0x42f2d6
call fcn.0042c837
or edi, 0xbeccdd53
cmp dword [ebp - 0x50], 0x7d
jle 0x42f2de
add edi, 0xa51c51ea
jmp 0x42f2e4
add edi, 0x98d26053
xor edi, 0xdeb4c35d
mov dword [0x44d90c], edi
call fcn.0042c70c
mov eax, dword [ebp - 0xc]
mov cl, byte [ebp - 1]
mov byte [ebp + eax - 0x1ec], cl
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
cmp eax, 0x100
jae 0x42f31b
mov edi, dword [0x44d90c]
jmp 0x42f276
mov esi, dword [0x44d90c]
xor eax, eax
mov edx, eax
mov ecx, eax
mov edi, eax
lea eax, [ecx + 1]
movzx eax, al
mov dword [ebp - 0x4c], eax
push 0x73
pop ecx
mov al, byte [ebp + eax - 0x1ec]
mov byte [ebp - 1], al
movzx eax, al
mov dword [ebp - 0x44], eax
add eax, edx
movzx eax, al
mov edx, 0x23da
mov dword [ebp - 0x50], eax
mov eax, 0x402c04
add edx, ecx
inc eax
cmp edx, 0x16b4
ja 0x42f36b
movsx ecx, byte [eax]
test ecx, ecx
jne 0x42f357
jmp 0x42f385
call fcn.0042c70c
or dword [0x44d90c], 0xb7255a65
call fcn.0042c70c
mov esi, dword [0x44d90c]
xor esi, 0x647e9a64
add esi, 0x79b9af08
mov dword [0x44d90c], esi
call fcn.0042c837
mov edx, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x4c]
push 5
mov al, byte [ebp + edx - 0x1ec]
mov byte [ebp + ecx - 0x1ec], al
mov al, byte [ebp - 1]
mov byte [ebp + edx - 0x1ec], al
movzx eax, byte [ebp + ecx - 0x1ec]
add eax, dword [ebp - 0x44]
movzx eax, al
mov al, byte [ebp + eax - 0x1ec]
xor al, byte [ebp + edi - 0x14]
mov byte [ebp + edi - 0xe0], al
inc edi
pop eax
cmp edi, eax
jb 0x42f329
push 0xd
pop ecx
push 0xb
mov dword [ebp - 0x64], ecx
xor eax, eax
pop ecx
push 0x20
pop edx
push 5
mov dword [ebp - 0x5c], ecx
mov ecx, eax
mov byte [ebp - 0xdb], al
mov dword [ebp - 0x68], 0x1f
mov dword [ebp - 0x60], 0x34
mov dword [ebp - 0x58], 0xffffffb1
pop edi
sub edx, dword [ebp + ecx*4 - 0x68]
inc ecx
cmp ecx, edi
jl 0x42f417
push 0x3a
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x18], 0x16
mov dword [ebp - 0x14], 0x38
mov dword [ebp - 0x10], 0xffffff78
pop ecx
add ecx, dword [ebp + eax*4 - 0x18]
inc eax
cmp eax, 3
jl 0x42f43b
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0x8c], eax
imul eax, esi, 0xf6e811cb
mov dword [ebp - 0x40], ecx
lea ecx, [ebp - 0x208]
mov dword [0x44d90c], eax
call fcn.004361ab
push dword [ebp - 0xcc]
mov esi, eax
lea ecx, [ebp - 0xa0]
push dword [ebp - 0xd0]
lea eax, [ebp - 0x8c]
push dword [ebp - 0xe4]
push dword [ebp - 0xe8]
push eax
push dword [ebp - 0xec]
push dword [ebp - 0xa8]
push esi
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x2a8]
call fcn.0041e636
call eax
mov ecx, esi
call fcn.004369fb
push eax
push dword [ebp - 0xac]
push esi
call fcn.004360de
add esp, 0xc
mov ecx, esi
call fcn.0041e600
mov eax, dword [ebp - 0xb0]
lea ecx, [eax + eax]
call fcn.0041e51b
mov ecx, dword [ebp - 0xb4]
add ecx, ecx
mov dword [ebp - 0x4c], eax
call fcn.0041e51b
mov ecx, dword [ebp - 0xb8]
mov edi, eax
add ecx, ecx
call fcn.0041e51b
mov ecx, dword [ebp - 0xbc]
mov esi, eax
add ecx, ecx
mov dword [ebp - 0x44], esi
call fcn.0041e51b
mov ecx, dword [ebp - 0x94]
add ecx, ecx
mov dword [ebp - 0xc], eax
call fcn.0041e51b
mov ecx, esi
mov dword [ebp - 8], eax
call fcn.0040de57
mov ecx, dword [ebp - 0xc]
call fcn.0040da84
mov ecx, dword [ebp - 8]
call fcn.0040d1f2
lea ecx, [ebp - 0x224]
call fcn.004361ab
push dword [ebp - 8]
mov esi, eax
lea ecx, [ebp - 0xd8]
push dword [ebp - 0xc]
push dword [ebp - 0x44]
push esi
push dword [ebp - 0x4c]
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x240]
call fcn.0041e636
call eax
mov ecx, esi
call fcn.004369fb
push eax
push dword [ebp - 0x54]
push esi
call fcn.004360de
mov ecx, esi
call fcn.0041e600
mov esi, dword [ebp - 0x4c]
mov ecx, esi
call fcn.004369fb
push eax
mov edx, esi
mov ecx, edi
call fcn.004362f4
add esp, 0x24
mov ecx, edi
push dword [ebp - 0x8c]
call fcn.004369c6
mov edx, eax
call fcn.0042e12f
pop ecx
mov ecx, esi
mov dword [ebp - 0x94], eax
call fcn.0041e600
sub dword [0x44d90c], 0x644458a3
mov ecx, edi
call fcn.0041e600
push 0x73
mov edx, 0x17c5
mov eax, 0x402c04
pop ecx
add edx, ecx
inc eax
cmp edx, 0x55f
ja 0x42f5f5
movsx ecx, byte [eax]
test ecx, ecx
jne 0x42f5dc
mov eax, dword [0x44d90c]
jmp 0x42f5ff
mov eax, dword [0x44d90c]
xor eax, 0xec2245cf
mov ecx, dword [ebp - 0x44]
xor eax, 0x391b04f3
imul eax, eax, 0x4f142a59
mov dword [0x44d90c], eax
call fcn.0041e600
mov ecx, dword [ebp - 0xc]
call fcn.0041e600
mov ecx, dword [ebp - 8]
call fcn.0041e600
lea ecx, [ebp - 0x94]
call fcn.0042e123
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x34], eax
call fcn.0042e123
mov word [ebp - 0x30], ax
call fcn.0042e123
imul ecx, dword [0x44d90c], 0x2fef02d2
mov edx, dword [ebp - 0xc4]
mov esi, dword [ebp - 0xc8]
mov word [ebp - 0x2e], ax
mov dword [0x44d90c], ecx
jmp 0x42f67b
lea ecx, [ebp - 0x8c]
call fcn.0042e123
mov byte [ebp + edx - 0x2c], al
inc edx
cmp edx, esi
jl 0x42f66b
mov ecx, dword [ebp - 0x88]
add ecx, ecx
call fcn.0041e51b
mov edi, eax
test edi, edi
jne 0x42f73c
push 0x6d
pop ecx
sub cl, 0x30
cmp cl, 9
ja 0x42f6be
mov eax, dword [ebp - 0x90]
inc eax
mov dword [ebp - 0x90], eax
mov al, byte [eax]
mov cl, al
test al, al
jne 0x42f699
mov edi, dword [0x44d90c]
jmp 0x42f6ca
mov edi, dword [0x44d90c]
and edi, 0x977006b5
push 0xd
add edi, 0xa2b459b
mov dword [ebp - 0x18], 0x2b
pop eax
xor edi, 0x81a0e8e8
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], 0xffffffc8
xor esi, esi
push 0x73
mov ecx, 0x155e
mov eax, 0x402c04
pop edx
add ecx, edx
inc eax
cmp ecx, 0x22c8
ja 0x42f70d
movsx edx, byte [eax]
test edx, edx
jne 0x42f6f9
jmp 0x42f713
sub edi, 0x442509b2
add edi, 0x25f9df83
call fcn.0042c837
mov eax, dword [ebp - 0x98]
sub eax, dword [ebp + esi*4 - 0x18]
inc esi
mov dword [ebp - 0x98], eax
cmp esi, 3
jl 0x42f6ec
mov dword [0x44d90c], edi
jmp 0x42f79c
lea ecx, [ebp - 0x25c]
call fcn.004361ab
movzx ecx, word [ebp - 0x2e]
mov esi, eax
mov eax, dword [ebp - 0x50]
push dword [ebp + eax - 0x2c]
push ecx
push dword [ebp - 0x34]
lea ecx, [ebp - 0xe0]
push esi
push edi
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x278]
call fcn.0041e636
call eax
mov ecx, esi
call fcn.004369fb
mov ecx, dword [ebp - 0x40]
push eax
push ecx
push esi
call fcn.004360de
xor dword [0x44d90c], 0xb86d1c0d
add esp, 0x20
mov ecx, esi
call fcn.0041e600
mov eax, edi
pop edi
pop esi
leave
ret