Function at 0x445fe8
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, 0x2dc
push esi
push edi
mov edi, dword [0x44eeb0]
and edi, 0x64227602
mov dword [ebp - 0x104], edx
xor eax, eax
mov dword [ebp - 0x108], ecx
push 3
mov dword [ebp - 0xc], edi
mov edx, 0x924
mov dword [0x44eeb0], edi
mov ecx, eax
mov dword [ebp - 0x48], 0x1c
mov dword [ebp - 0x44], 0xe
mov dword [ebp - 0x40], 0x7f6
pop esi
sub edx, dword [ebp + ecx*4 - 0x48]
inc ecx
cmp ecx, esi
jl 0x446035
mov dword [ebp - 0x1c], 0x33
xorps xmm1, xmm1
mov dword [ebp - 0x18], 5
mov dword [ebp - 0x14], 0x4f
mov dword [ebp - 0x10], 0x3379
movups xmm0, xmmword [ebp - 0x1c]
mov dword [ebp - 0x10c], edx
mov edx, 0x155
mov dword [ebp - 0x48], 0x1e
psubd xmm1, xmm0
mov dword [ebp - 0x44], 0x20
movaps xmm0, xmm1
mov dword [ebp - 0x40], 0xf8
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd ecx, xmm1
add ecx, 0x3800
mov dword [ebp - 0x114], ecx
mov ecx, eax
sub edx, dword [ebp + ecx*4 - 0x48]
inc ecx
cmp ecx, esi
jl 0x4460af
push 0x62
mov dword [ebp - 0x110], edx
mov ecx, eax
pop edx
mov dword [ebp - 0x48], 0x20
mov dword [ebp - 0x44], 0x31
mov dword [ebp - 0x40], 0x34d
add edx, dword [ebp + ecx*4 - 0x48]
inc ecx
cmp ecx, esi
jl 0x4460d8
push 0x1f
mov dword [ebp - 0x11c], edx
mov ecx, eax
pop edx
mov dword [ebp - 0x48], 0x12
mov dword [ebp - 0x44], 0x42
mov dword [ebp - 0x40], 0xffffffbf
add edx, dword [ebp + ecx*4 - 0x48]
inc ecx
cmp ecx, esi
jl 0x446101
push 0xa
pop ecx
push 0x11
mov dword [ebp - 0x3c], ecx
lea edi, [ebp - 0x280]
mov byte [ebp - 0xa1], cl
mov esi, 0x4037fc
pop ecx
mov byte [ebp - 0x8f], cl
mov byte [ebp - 0x8c], cl
push 0x73
pop ecx
mov dword [ebp - 0x4c], ecx
mov byte [ebp - 0x69], cl
push 8
pop ecx
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x118], edx
mov ecx, eax
mov word [ebp - 0xa4], 0x8ded
mov byte [ebp - 0xa2], 0xc8
movsw word es:[edi], word [esi]
mov dword [ebp - 0xa0], 0x15a8fe84
mov edi, eax
mov dword [ebp - 0x9c], 0x32cecc83
mov dword [ebp - 0x98], 0x94009c91
mov dword [ebp - 0x94], 0xb9a15b3d
mov byte [ebp - 0x90], 0xfe
mov word [ebp - 0x8e], 0x7e91
mov dword [ebp - 0x8b], 0xf43c4446
mov dword [ebp - 0x87], 0x23b189f9
mov dword [ebp - 0x83], 0xf9da6cd1
mov dword [ebp - 0x7f], 0x182fd23a
mov dword [ebp - 0x7b], 0xa8eb5764
mov dword [ebp - 0x77], 0x20421f43
mov dword [ebp - 0x73], 0xc1bc43cc
mov dword [ebp - 0x6f], 0xbd692f77
mov word [ebp - 0x6b], 0x68da
mov dword [ebp - 0x68], 0xe0ef2db5
mov dword [ebp - 0x64], 0xcc06f9ff
mov dword [ebp - 0x60], 0x32647589
mov dword [ebp - 0x5c], 0xc1afefa6
mov dword [ebp - 0x58], 0xcc2aeec9
mov dword [ebp - 0x54], 0xe34c1495
mov dword [ebp - 0x50], 0x51207192
mov byte [ebp + ecx - 0x25c], cl
inc ecx
cmp ecx, 0x100
jb 0x44620a
mov esi, eax
mov dword [ebp - 0x38], 0x21
xor edx, edx
mov cl, byte [ebp + esi - 0x25c]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x38]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x280]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x25c]
mov byte [ebp + esi - 0x25c], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + edi - 0x25c], al
cmp esi, 0x100
jb 0x446223
xor esi, esi
mov dword [ebp - 8], esi
mov edi, esi
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 8]
mov cl, byte [ebp + edi - 0x25c]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x25c]
mov byte [ebp + edi - 0x25c], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x25c], cl
movzx eax, byte [ebp + edi - 0x25c]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x25c]
xor al, byte [ebp + esi - 0xa4]
mov byte [ebp + esi - 0x2dc], al
inc esi
cmp esi, 0x58
jb 0x44626e
mov esi, 0x403820
mov dword [ebp - 0x24], 0xc97824dd
lea edi, [ebp - 0x30]
mov dword [ebp - 0x20], 0x28bdebfe
xor eax, eax
mov dword [ebp - 0x1c], 0x504c501b
mov byte [ebp - 0x284], al
mov ecx, eax
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x18], 0xf0d870d5
mov dword [ebp - 0x14], 0x3db6a44e
mov dword [ebp - 0x10], 0x3d0283fd
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
inc ecx
cmp ecx, 0xe21
je 0x44631d
cmp byte [ecx + 0x4039d8], al
jne 0x44630a
jmp 0x44633a
push dword [0x44edf0]
mov edx, dword [0x44eda8]
call fcn.0044251f
mov edi, dword [0x44eeb0]
xor eax, eax
pop ecx
mov dword [ebp - 0xc], edi
mov edi, eax
mov ecx, eax
mov byte [ebp + ecx - 0x25c], cl
inc ecx
cmp ecx, 0x100
jb 0x44633e
mov esi, eax
xor edx, edx
mov cl, byte [ebp + esi - 0x25c]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x3c]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x30]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x25c]
mov byte [ebp + esi - 0x25c], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + edi - 0x25c], al
cmp esi, 0x100
jb 0x446350
xor esi, esi
mov dword [ebp - 8], esi
mov edi, esi
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 8]
mov cl, byte [ebp + edi - 0x25c]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x25c]
mov byte [ebp + edi - 0x25c], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x25c], cl
movzx eax, byte [ebp + edi - 0x25c]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x25c]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x278], al
inc esi
cmp esi, 0x18
jb 0x446398
push 0x55
pop ecx
mov dword [ebp - 0x3c], ecx
lea edi, [ebp - 0x100]
mov byte [ebp - 0x28], cl
mov esi, 0x4029d8
push 0x15
pop ecx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0xc]
xor eax, eax
add ecx, 0x4c5c6cdf
mov byte [ebp - 0x260], al
mov dword [0x44eda8], ecx
mov ecx, eax
mov dword [ebp - 0x2c], 0xacb99347
movsw word es:[edi], word [esi]
mov dword [ebp - 0x38], eax
mov byte [ebp + ecx - 0x25c], cl
inc ecx
cmp ecx, 0x100
jb 0x44642e
mov esi, eax
xor edx, edx
mov cl, byte [ebp + esi - 0x25c]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x3c]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x100]
add eax, dword [ebp - 0x38]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 0x38], ecx
mov al, byte [ebp + ecx - 0x25c]
mov byte [ebp + esi - 0x25c], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x25c], al
cmp esi, 0x100
jb 0x446440
xor esi, esi
mov dword [ebp - 8], esi
mov edi, esi
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 8]
mov cl, byte [ebp + edi - 0x25c]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x25c]
mov byte [ebp + edi - 0x25c], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x25c], cl
movzx eax, byte [ebp + edi - 0x25c]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x25c]
xor al, byte [ebp + esi - 0x2c]
mov byte [ebp + esi - 0x44], al
inc esi
cmp esi, 5
jb 0x44648f
mov edi, dword [ebp - 0xc]
xor eax, eax
mov edx, 0x403920
mov byte [ebp - 0x3f], al
mov ecx, eax
mov dword [ebp - 0x3c], edx
mov esi, edx
inc ecx
lea esi, [esi + 2]
cmp ecx, 0x1c13
je 0x44652b
cmp word [esi], ax
jne 0x4464f8
cmp ecx, 0x2430
jle 0x446545
push dword [0x44edf0]
mov edx, dword [0x44eda8]
call fcn.0044251f
pop ecx
mov edi, dword [0x44eeb0]
jmp 0x446551
push dword [0x44edf0]
mov edx, edi
call fcn.0044251f
mov edi, dword [0x44eeb0]
pop ecx
add edi, 0x5bd5f52d
sub edi, 0x58de6e2d
mov dword [0x44eeb0], edi
mov dword [ebp - 0xc], edi
mov edx, edi
mov ecx, 0x403920
call fcn.0044260d
mov esi, 0x402768
mov dword [ebp - 0x1c], 4
mov dword [ebp - 0x18], 0x52
lea edi, [ebp - 0x30]
mov dword [ebp - 0x14], 0x36
xorps xmm1, xmm1
mov dword [ebp - 0x10], 0xffffff74
movups xmm0, xmmword [ebp - 0x1c]
push 0x55
pop eax
psubd xmm1, xmm0
movsd dword es:[edi], dword [esi]
movaps xmm0, xmm1
mov byte [ebp - 0xda], al
push 0x21
psrldq xmm0, 8
pop eax
movsd dword es:[edi], dword [esi]
paddd xmm1, xmm0
movups xmm0, xmm1
mov byte [ebp - 0xcf], al
push 0x11
pop eax
movsw word es:[edi], word [esi]
psrldq xmm0, 4
mov byte [ebp - 0xc7], al
paddd xmm1, xmm0
mov byte [ebp - 0xba], al
xor eax, eax
movd dword [ebp - 0x120], xmm1
mov ecx, eax
mov dword [ebp - 0xec], 0x539f0831
mov dword [ebp - 0xe8], 0xf0f33dfa
mov dword [ebp - 0xe4], 0x3e1ff053
mov dword [ebp - 0xe0], 0x97faa577
mov word [ebp - 0xdc], 0x513
mov dword [ebp - 0xd9], 0xf4379358
mov dword [ebp - 0xd5], 0x1e9a3718
mov word [ebp - 0xd1], 0x45b
mov dword [ebp - 0xce], 0x7146b3e6
mov word [ebp - 0xca], 0x3562
mov byte [ebp - 0xc8], 0xa2
mov dword [ebp - 0xc6], 0xc2a4315
mov dword [ebp - 0xc2], 0xd5ada9b7
mov dword [ebp - 0xbe], 0xf2b852c6
mov dword [ebp - 0xb9], 0x6f9304cf
mov dword [ebp - 0xb5], 0xd3f55f0b
mov dword [ebp - 0xb1], 0xea651e1d
mov byte [ebp - 0xad], 0x5e
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0x34], eax
mov byte [ebp + ecx - 0x25c], cl
inc ecx
cmp ecx, 0x100
jb 0x446687
mov edi, dword [ebp - 0xc]
mov ecx, eax
mov eax, dword [0x44edf0]
xor esi, esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 8], eax
mov al, byte [ebp + ecx - 0x25c]
xor edx, edx
mov byte [ebp - 1], al
mov eax, ecx
push 0xa
pop ecx
div ecx
movzx ecx, byte [ebp - 1]
movzx eax, byte [ebp + edx - 0x30]
add eax, dword [ebp - 0x34]
add ecx, eax
movzx eax, cl
mov ecx, esi
mov dword [ebp - 0x34], eax
inc ecx
cmp ecx, 0x7df
jg 0x446761
cmp byte [ecx + 0x4039d8], 0
jne 0x4466d2
lea eax, [edi - 0x2ea6b0d6]
mov dword [ebp - 8], eax
mov dword [0x44edf0], eax
mov ecx, 0x403920
add eax, 0xc17621aa
mov edx, eax
mov dword [ebp - 0xc], eax
call fcn.0044260d
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x38]
mov al, byte [ebp + edx - 0x25c]
mov byte [ebp + ecx - 0x25c], al
inc ecx
mov al, byte [ebp - 1]
mov byte [ebp + edx - 0x25c], al
mov dword [ebp - 0x38], ecx
cmp ecx, 0x100
jb 0x4466a9
xor eax, eax
mov dword [ebp - 0x34], eax
mov edi, eax
push 0x6f
mov ecx, 0x403920
pop edx
lea eax, [edx - 0x30]
push 9
pop edx
cmp ax, dx
ja 0x446788
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x446747
jmp 0x446795
mov edi, dword [ebp - 8]
and edi, 0xcaa431f1
mov dword [0x44eeb0], edi
cmp ecx, 0x1172
jle 0x4466e8
mov eax, edi
and eax, 0x52f9c2d3
jmp 0x4466ee
mov eax, dword [ebp - 8]
add eax, 0x2978f96c
mov dword [0x44eeb0], eax
imul edx, dword [ebp - 0xc], 0x36b87794
push edx
mov dword [0x44eda8], edx
call fcn.0044251f
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 0x34]
pop ecx
mov cl, byte [ebp + edi - 0x25c]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x34], eax
mov al, byte [ebp + eax - 0x25c]
mov byte [ebp + edi - 0x25c], al
mov eax, dword [ebp - 0x34]
mov byte [ebp + eax - 0x25c], cl
movzx eax, byte [ebp + edi - 0x25c]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x25c]
xor al, byte [ebp + esi - 0xec]
mov byte [ebp + esi - 0x90], al
inc esi
cmp esi, 0x40
jae 0x446819
mov eax, dword [0x44edf0]
mov dword [ebp - 8], eax
mov eax, dword [0x44eda8]
mov dword [ebp - 0xc], eax
jmp 0x44673f
push 0x29
xor eax, eax
mov dword [ebp - 0x30], 0x26
pop edi
mov byte [ebp - 0x50], al
mov edx, edi
mov dword [ebp - 0x2c], 0x5d
mov ecx, eax
mov dword [ebp - 0x28], 0xffffff55
add edx, dword [ebp + ecx*4 - 0x30]
inc ecx
cmp ecx, 3
jl 0x44683a
mov esi, eax
mov dword [ebp - 0x15c], edx
mov eax, 0x4039d8
mov dword [ebp - 0x30], 0x4a
mov dword [ebp - 0x34], eax
mov ecx, eax
mov dword [ebp - 0x2c], 0x59
mov al, 0x73
mov dword [ebp - 0x28], 0xffffff5d
sub al, 0x30
cmp al, 9
ja 0x446881
inc ecx
mov al, byte [ecx]
test al, al
jne 0x44686d
mov eax, dword [0x44eda8]
jmp 0x44688b
mov eax, dword [0x44eda8]
xor eax, 0x6ade9f8
mov edx, dword [0x44eeb0]
imul eax, eax, 0x4dcde84f
push edx
mov dword [0x44eda8], eax
call fcn.0044251f
pop ecx
xor ecx, ecx
mov eax, ecx
sub esi, dword [ebp + eax*4 - 0x30]
inc eax
cmp eax, 3
jl 0x4468a7
push 0x13
pop eax
mov dword [ebp - 0x14], eax
mov edx, 0x3400
mov dword [ebp - 0x150], esi
mov eax, ecx
mov dword [ebp - 0x20], 0x43
mov dword [ebp - 0x1c], 0x12
mov dword [ebp - 0x18], 0x1e
mov dword [ebp - 0x10], 0x2f7a
sub edx, dword [ebp + eax*4 - 0x20]
inc eax
cmp eax, 5
jl 0x4468e0
mov dword [ebp - 0x1c], 0x2a
xorps xmm2, xmm2
mov dword [ebp - 0x18], 0x61
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x10], 0x144
movups xmm1, xmmword [ebp - 0x1c]
mov dword [ebp - 0x154], edx
mov edx, ecx
mov dword [ebp - 0x20], 0x5e
movaps xmm0, xmm1
mov dword [ebp - 0x1c], 0x2d
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x18], 0x46
movups xmm0, xmm1
mov dword [ebp - 0x14], 0x18
psrldq xmm0, 4
paddd xmm1, xmm0
mov dword [ebp - 0x10], 0xffffff17
movd eax, xmm1
add eax, 8
mov dword [ebp - 0x158], eax
mov eax, ecx
sub edx, dword [ebp + eax*4 - 0x20]
inc eax
cmp eax, 5
jl 0x44695b
push 0x21
pop eax
mov dword [ebp - 0x14], eax
movaps xmm1, xmm2
mov dword [ebp - 0x1c], 0x5a
mov dword [ebp - 0x18], 0x32
mov dword [ebp - 0x10], 0xffffff12
movups xmm0, xmmword [ebp - 0x1c]
push 0x6f
pop esi
paddd xmm1, xmm0
mov dword [ebp - 0xa8], edx
movaps xmm0, xmm1
mov edx, 0x403920
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
push 9
pop edi
add eax, 0x41
mov dword [ebp - 0x12c], eax
lea eax, [esi - 0x30]
cmp ax, di
ja 0x4469de
add edx, 2
movzx eax, word [edx]
mov esi, eax
test ax, ax
jne 0x4469c1
mov esi, dword [0x44eeb0]
jmp 0x4469ea
mov esi, dword [0x44edf0]
xor esi, 0xe3f5fb47
push 0x23
pop eax
mov dword [ebp - 0x1c], eax
mov edx, ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], 0x38
mov dword [ebp - 0x10], 0x333
movups xmm1, xmmword [ebp - 0x1c]
mov dword [ebp - 0x20], 0x5c
mov dword [ebp - 0x1c], 0x51
paddd xmm1, xmm2
mov dword [ebp - 0x18], 0x5a
movaps xmm0, xmm1
mov dword [ebp - 0x14], 0x1b
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x10], 0xede
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, 0x4f
mov dword [ebp - 0x128], eax
mov eax, dword [0x44eda8]
imul edi, eax, 0x47a97d7e
mov dword [ebp - 0xc], eax
mov eax, 0x1200
mov dword [ebp - 8], edi
sub eax, dword [ebp + edx*4 - 0x20]
inc edx
cmp edx, 5
jl 0x446a69
mov dword [ebp - 0x38], 2
mov edx, ecx
mov edi, dword [ebp - 0x38]
mov dword [ebp - 0x124], eax
mov dword [ebp - 0x30], 0x5b
mov dword [ebp - 0x2c], 0x57
mov dword [ebp - 0x28], 0xffffff4c
add edi, dword [ebp + edx*4 - 0x30]
inc edx
cmp edx, 3
jl 0x446a9a
mov dword [ebp - 0x38], edi
mov edx, 0x1ba
mov edi, dword [ebp - 8]
add edx, dword [ebp - 0x4c]
inc dword [ebp - 0x34]
mov eax, dword [ebp - 0xc]
cmp edx, 0x13fb
ja 0x446ad2
mov eax, dword [ebp - 0x34]
movsx eax, byte [eax]
mov dword [ebp - 0x4c], eax
test eax, eax
mov eax, dword [ebp - 0xc]
jne 0x446aaf
jmp 0x446ada
mov edi, esi
or edi, 0x6e3fe57d
xor eax, 0xefe7eadf
mov dword [ebp - 0x2c], 0x49
or eax, 0xa762e0cd
mov dword [ebp - 0x28], 0x371
xor eax, 0xf96c9df9
mov edx, ecx
push 0x46
mov dword [ebp - 0xc], eax
mov dword [0x44eeb0], eax
pop esi
add esi, dword [ebp + edx*4 - 0x2c]
inc edx
cmp edx, 2
jl 0x446b04
mov dword [ebp - 0x130], esi
mov edx, ecx
mov esi, 0x1800
mov dword [ebp - 0x20], 0x19
mov dword [ebp - 0x1c], 0x41
mov dword [ebp - 0x18], 0x5a
mov dword [ebp - 0x14], 0x14
mov dword [ebp - 0x10], 0x1538
sub esi, dword [ebp + edx*4 - 0x20]
sub edi, 0x56025249
inc edx
cmp edx, 5
jl 0x446b3e
push 0x13
mov dword [ebp - 0x34], esi
mov edx, ecx
mov dword [0x44edf0], edi
mov dword [ebp - 0x2c], 0x2b
mov dword [ebp - 0x28], 0xffffffc2
pop esi
add esi, dword [ebp + edx*4 - 0x2c]
inc edx
cmp edx, 2
jl 0x446b6a
mov dword [ebp - 0x134], esi
push 0x11
mov dword [ebp - 0x30], 0x48
mov edx, ecx
mov dword [ebp - 0x2c], 0x2a
mov dword [ebp - 0x28], 0xffffff7d
pop esi
add esi, dword [ebp + edx*4 - 0x30]
inc edx
cmp edx, 3
jl 0x446b94
mov dword [ebp - 0x1c], 0x61
mov dword [ebp - 0x18], 0x43
mov dword [ebp - 0x14], 0x63
mov dword [ebp - 0x10], 0x2c8
movups xmm1, xmmword [ebp - 0x1c]
mov dword [ebp - 0x13c], esi
mov esi, ecx
mov dword [ebp - 0x1c], 0x2d
paddd xmm1, xmm2
mov dword [ebp - 0x18], 0x45
movaps xmm0, xmm1
mov dword [ebp - 0x14], 0x2b
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x10], 0x1b63
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd edx, xmm1
add edx, 0x31
mov dword [ebp - 0x138], edx
imul edx, edi, 0x5cd3216a
mov dword [0x44eda8], edx
add dword [ebp - 0x3c], 2
inc esi
cmp esi, 0x317
je 0x446c31
mov eax, dword [ebp - 0x3c]
cmp word [eax], cx
mov eax, dword [ebp - 0xc]
jne 0x446c17
jmp 0x446c48
push edi
call fcn.0044251f
mov eax, dword [0x44eeb0]
xorps xmm2, xmm2
mov edx, dword [0x44eda8]
pop ecx
xor ecx, ecx
and eax, 0x545193d
mov dword [0x44edf0], eax
movups xmm0, xmmword [ebp - 0x1c]
mov dword [ebp - 0x30], 0x22
xor edx, 0x30089e9a
movaps xmm1, xmm2
mov dword [0x44eda8], edx
psubd xmm1, xmm0
mov dword [ebp - 0x2c], 0x35
movaps xmm0, xmm1
mov dword [ebp - 0x28], 0xffffffa6
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
push 3
pop esi
add eax, 0x1e00
mov edx, esi
mov dword [ebp - 0x3c], eax
mov eax, ecx
add edx, dword [ebp + eax*4 - 0x30]
inc eax
cmp eax, esi
jl 0x446ca9
push 0x34
mov dword [ebp - 0x144], edx
mov eax, ecx
pop edx
mov dword [ebp - 0x2c], 0x2f
mov dword [ebp - 0x28], 0x39d
add edx, dword [ebp + eax*4 - 0x2c]
inc eax
cmp eax, 2
jl 0x446ccb
push 0xb
mov dword [ebp - 0x140], edx
mov eax, ecx
mov dword [ebp - 0x2c], 0x5e
mov dword [ebp - 0x28], 0x197
pop edx
add edx, dword [ebp + eax*4 - 0x2c]
inc eax
cmp eax, 2
jl 0x446cee
mov dword [ebp - 0x18], 0x44
mov eax, ecx
mov dword [ebp - 0x14], 0x26
mov dword [ebp - 0x10], 0xffffff3e
mov dword [ebp - 0x1c], 0x58
movups xmm0, xmmword [ebp - 0x1c]
mov dword [ebp - 0xc], edx
mov edx, 0x3800
mov dword [ebp - 0x18], 0x1a
psubd xmm2, xmm0
mov dword [ebp - 0x14], 0x20
movaps xmm0, xmm2
mov dword [ebp - 0x10], 0x33c6
psrldq xmm0, 8
paddd xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd dword [ebp - 0x28], xmm2
sub edx, dword [ebp + eax*4 - 0x18]
inc eax
cmp eax, esi
jl 0x446d58
push 0x21
pop eax
push 0xc
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14c], edx
mov dword [ebp - 0x14], 0x51
mov dword [ebp - 0x10], 0x182
pop eax
add eax, dword [ebp + ecx*4 - 0x18]
inc ecx
cmp ecx, esi
jl 0x446d7e
mov ecx, dword [ebp - 0x10c]
add ecx, ecx
mov dword [ebp - 0x148], eax
call fcn.0041e51b
mov ecx, dword [ebp - 0x110]
mov edi, eax
imul ecx, dword [ebp - 0x114]
add ecx, ecx
call fcn.0041e51b
mov ecx, dword [ebp - 0x118]
mov esi, eax
imul ecx, dword [ebp - 0x11c]
mov dword [ebp - 0x4c], esi
add ecx, ecx
call fcn.0041e51b
mov dword [ebp - 8], eax
test edi, edi
je 0x446fb7
test eax, eax
je 0x446fb7
test esi, esi
je 0x446fb7
lea ecx, [ebp - 0x2dc]
call fcn.0043617c
push dword [ebp + 8]
mov esi, eax
lea ecx, [ebp - 0x44]
push edi
push dword [ebp - 0x104]
push esi
push dword [ebp + 0xc]
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x278]
call fcn.0041e636
call eax
mov eax, dword [0x44eda8]
mov ecx, esi
and eax, 0xaf50f049
mov dword [0x44edf0], eax
call fcn.004369c6
push eax
push dword [ebp - 0x120]
push esi
call fcn.004360de
mov ecx, esi
call fcn.0041e600
mov ecx, dword [ebp + 0xc]
call fcn.004369c6
mov edx, dword [ebp + 0x14]
push eax
call fcn.0041c49c
push dword [ebp - 0x15c]
mov edi, dword [ebp + 0x10]
lea edx, [ebp - 0x90]
push dword [ebp + 0x14]
mov ecx, dword [ebp - 0x108]
push edi
push dword [ebp + 0xc]
call fcn.0043ab3a
mov esi, eax
mov eax, dword [ebp - 0x158]
imul eax, dword [ebp - 0x154]
add eax, eax
push eax
push dword [ebp - 0x150]
push dword [ebp + 0xc]
call fcn.004360de
add esp, 0x40
cmp esi, dword [ebp - 0xa8]
jne 0x446f06
xor eax, eax
mov dword [ebp - 0x18], 2
mov dword [ebp - 0x14], 0x37
mov ecx, eax
mov dword [ebp - 0x10], 0xffffffc7
sub eax, dword [ebp + ecx*4 - 0x18]
inc ecx
cmp ecx, 3
jl 0x446eb6
mov ecx, edi
mov dword [ebp - 0xa8], eax
call fcn.004369c6
mov edx, eax
call fcn.0040c1fb
mov ecx, edi
call fcn.004369c6
mov ecx, dword [ebp - 0x4c]
mov edx, edi
push eax
call fcn.00436393
push dword [ebp - 8]
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0xa8]
call fcn.00417fee
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp - 8]
push eax
call fcn.0041c49c
add esp, 0xc
mov eax, dword [ebp - 0x124]
imul eax, dword [ebp - 0x128]
add eax, eax
push eax
push dword [ebp - 0x12c]
push edi
call fcn.004360de
mov eax, dword [ebp - 0x34]
imul eax, dword [ebp - 0x130]
add eax, eax
push eax
push dword [ebp - 0x38]
push dword [ebp + 0x14]
call fcn.004360de
push dword [ebp + 0x14]
mov eax, dword [ebp - 0x134]
mov edx, dword [ebp - 0x104]
mov ecx, dword [ebp - 0x108]
push edi
push dword [ebp + 0xc]
push eax
push dword [ebp - 8]
push dword [ebp + 8]
call fcn.0043cbb5
mov eax, dword [ebp - 0x3c]
imul eax, dword [ebp - 0x138]
add eax, eax
push eax
push dword [ebp - 0x13c]
push dword [ebp + 0xc]
call fcn.004360de
mov eax, dword [ebp - 0xc]
imul eax, dword [ebp - 0x140]
add eax, eax
push eax
push dword [ebp - 0x144]
push dword [ebp + 0x14]
call fcn.004360de
mov eax, dword [ebp - 0x148]
add esp, 0x48
imul eax, dword [ebp - 0x14c]
add eax, eax
push eax
push dword [ebp - 0x28]
push edi
call fcn.004360de
mov esi, dword [ebp - 0x4c]
add esp, 0xc
mov ecx, esi
call fcn.0041e600
imul eax, dword [0x44eeb0], 0x3800ee40
mov ecx, dword [ebp - 8]
mov dword [0x44eeb0], eax
call fcn.0041e600
pop edi
pop esi
leave
ret