Function at 0x40c1fb
Capabilities:
Authenticate hmac
Contain obfuscated stackstrings
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x288
push ebx
push esi
mov esi, dword [0x44d3f0]
xor eax, eax
push edi
push 0x5c
mov dword [ebp - 0xac], edx
mov dword [ebp - 0x20], ecx
pop edx
mov dword [ebp - 0xa8], 0x10
mov dword [ebp - 0xa4], 0x28
mov dword [ebp - 0xa0], 0x3b
mov dword [ebp - 0x9c], 0xffffff31
add edx, dword [ebp + eax*4 - 0xa8]
inc eax
cmp eax, 4
jl 0x40c243
xor eax, eax
mov dword [ebp - 0x24], edx
mov ebx, 0x820
cmp byte [str.bad_file_descriptor], al
je 0x40c281
inc eax
cmp eax, 0x130
jl 0x40c275
cmp byte [eax + str.bad_file_descriptor], 0
jne 0x40c262
jmp 0x40c281
add esi, 0xe0ebbd9c
xor esi, 0xd4d3cfec
call fcn.0040b486
mov dword [ebp - 0xcc], 0x22
xor eax, eax
mov dword [ebp - 0xc8], 0x1c
mov dword [ebp - 0xc4], 0x4e
mov dword [ebp - 0xc0], 0x36
mov dword [ebp - 0xbc], 0x65a
sub ebx, dword [ebp + eax*4 - 0xcc]
inc eax
cmp eax, 5
jl 0x40c2ba
push 0x14
pop eax
mov dword [ebp - 0xc], ebx
lea edi, [ebp - 0x98]
lea ebx, [esi + 0x2aa61d6a]
and dword [ebp - 8], 0
push 5
pop ecx
mov esi, 0x401500
mov dword [ebp - 0x1c], eax
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x76], al
xor eax, eax
mov word [ebp - 0x78], 0xa8b2
mov dword [ebp - 0x75], 0x55348e5b
mov dword [ebp - 0x71], 0x7cb9a286
mov dword [ebp - 0x6d], 0x45dc3812
mov dword [ebp - 0x69], 0x26f5f95
mov dword [ebp - 0x65], 0x911ad275
mov dword [ebp - 0x61], 0x50b9c4b0
mov dword [ebp - 0x5d], 0x863253c3
mov dword [ebp - 0x59], 0x2c92e80d
mov dword [ebp - 0x55], 0x5d097753
mov dword [ebp - 0x51], 0xc659fa7d
mov dword [ebp - 0x4d], 0x212a7062
mov dword [ebp - 0x49], 0x8e59d034
mov dword [ebp - 0x45], 0xea98d4fc
mov dword [ebp - 0x41], 0xce0a7a45
mov dword [ebp - 0x3d], 0xe3aca9f7
mov byte [ebp - 0x39], 0x5a
movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x288], al
inc eax
cmp eax, 0x100
jb 0x40c363
xor esi, esi
xor edx, edx
mov cl, byte [ebp + esi - 0x288]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x1c]
movzx ecx, cl
lea edi, [ebx - 0x3d067b16]
movzx eax, byte [ebp + edx - 0x98]
add eax, dword [ebp - 8]
add ecx, eax
movzx eax, cl
mov dword [ebp - 8], eax
imul ecx, ebx, 0x72809d04
xor eax, eax
inc eax
cmp eax, 0x248c
je 0x40c3bc
cmp byte [eax + 0x4015b0], 0
jne 0x40c3a9
jmp 0x40c3c9
call fcn.0040b486
mov ecx, edi
or ecx, 0x50453963
imul ebx, ecx, 0x1059e1a2
imul edi, edi, 0x283b3590
call fcn.0040b486
mov ecx, dword [ebp - 8]
mov al, byte [ebp + ecx - 0x288]
mov byte [ebp + esi - 0x288], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x288], al
cmp esi, 0x100
jb 0x40c374
mov dword [0x44d3d4], ebx
xor ecx, ecx
xor ebx, ebx
xor esi, esi
lea eax, [ebx + 1]
movzx ebx, al
mov al, byte [ebp + ebx - 0x288]
mov byte [ebp - 1], al
movzx eax, al
mov dword [ebp - 0x18], eax
add eax, ecx
movzx eax, al
mov ecx, 0x4015b0
mov dword [ebp - 0x1c], eax
mov al, 0x46
sub al, 0x30
cmp al, 9
ja 0x40c442
inc ecx
mov al, byte [ecx]
test al, al
jne 0x40c433
jmp 0x40c44d
lea eax, [edi + 0x7292470c]
mov dword [0x44d3d4], eax
and edi, 0xbecba1a1
mov dword [0x44d3f0], edi
call fcn.0040b31d
mov ecx, dword [ebp - 0x1c]
mov al, byte [ebp + ecx - 0x288]
mov byte [ebp + ebx - 0x288], al
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x288], al
movzx eax, byte [ebp + ebx - 0x288]
add eax, dword [ebp - 0x18]
movzx eax, al
mov al, byte [ebp + eax - 0x288]
xor al, byte [ebp + esi - 0x78]
mov byte [ebp + esi - 0x188], al
inc esi
cmp esi, 0x40
jae 0x40c4aa
mov edi, dword [0x44d3f0]
jmp 0x40c40e
push 0x46
mov byte [ebp - 0x148], 0
mov edx, 0xaba
mov eax, 0x4015b0
pop ecx
add edx, ecx
inc eax
cmp edx, 0x880
ja 0x40c4de
movsx ecx, byte [eax]
test ecx, ecx
jne 0x40c4be
mov edi, dword [0x44d3d4]
mov esi, dword [0x44d3f0]
jmp 0x40c4ef
call fcn.0040b31d
mov esi, dword [0x44d3f0]
imul edi, esi, 0xcf60a9bd
xor esi, 0x9ecb8fc0
mov dword [0x44d3f0], esi
xor edi, 0xc5d84f7c
call fcn.0040b486
mov al, byte [str.bad_file_descriptor]
mov ecx, str.bad_file_descriptor
jmp 0x40c51b
sub al, 0x30
cmp al, 9
ja 0x40c521
inc ecx
mov al, byte [ecx]
test al, al
jne 0x40c512
jmp 0x40c52f
mov esi, edi
or esi, 0x9ddf5e7b
mov dword [0x44d3f0], esi
and esi, 0x20cda07c
mov dword [ebp - 0xb8], 0x1e
xor edi, edi
mov dword [0x44d3d4], esi
mov dword [ebp - 0xb4], 0xe
xor eax, eax
mov dword [ebp - 0xb0], 0xffffffd4
sub edi, dword [ebp + eax*4 - 0xb8]
inc eax
cmp eax, 3
jl 0x40c55d
mov ecx, dword [ebp - 0xc]
xorps xmm1, xmm1
mov dword [ebp - 0xa8], 0x3f
mov dword [ebp - 0xa4], 0x5b
mov dword [ebp - 0xa0], 0x59
mov dword [ebp - 0x9c], 0xffffff0d
movups xmm0, xmmword [ebp - 0xa8]
mov dword [ebp - 0x14], edi
psubd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd ebx, xmm1
mov dword [ebp - 0x7c], ebx
call fcn.0041e51b
lea edx, [ebp - 0x188]
mov dword [ebp - 0x1c], eax
mov ecx, eax
call fcn.00436a85
cmp ebx, dword [ebp - 0xac]
jae 0x40cbef
mov edi, dword [0x44d3f0]
mov dword [ebp - 0xdc], 0x28
mov dword [ebp - 0xd8], 0xfffffffc
mov dword [ebp - 0xe8], 0x5a
mov dword [ebp - 0xe4], 0x5e
mov dword [ebp - 0xe0], 0xffffff21
xor ebx, ebx
lea eax, [edi + 0x46cc57f6]
mov dword [0x44d3d4], eax
call fcn.0040b31d
mov dword [ebp - 0x38], 0x48
xor eax, eax
mov dword [ebp - 0x34], 0x52
mov dword [ebp - 0x30], 0x53
mov dword [ebp - 0x2c], 0x1b
mov dword [ebp - 0x28], 0xfffffef8
sub ebx, dword [ebp + eax*4 - 0x38]
inc eax
cmp eax, 5
jl 0x40c655
push 0x1c
pop ecx
xor eax, eax
add ecx, dword [ebp + eax*4 - 0xdc]
inc eax
cmp eax, 2
jl 0x40c664
movzx eax, byte [str.bad_file_descriptor]
mov edx, 0xc36
mov dword [ebp - 0x80], ecx
mov ecx, str.bad_file_descriptor
mov dword [ebp - 0xc], 0x2b
jmp 0x40c6a0
add edx, eax
inc ecx
cmp edx, 0x18f4
ja 0x40c8b8
movzx eax, byte [ecx]
test eax, eax
jne 0x40c68e
mov esi, dword [0x44d3d4]
mov edi, esi
xor edi, 0x3d0b1e3c
mov dword [ebp - 0x18], esi
add edi, 0x76f7126c
mov dword [ebp - 8], edi
mov dword [0x44d3f0], edi
call fcn.0040b486
mov ecx, dword [ebp - 0xc]
xor eax, eax
add ecx, dword [ebp + eax*4 - 0xe8]
inc eax
cmp eax, 3
jl 0x40c6ce
mov edx, dword [ebp - 0x80]
movzx eax, bl
mov dword [ebp - 0xc], ecx
cmp eax, edx
jge 0x40c70b
mov esi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x7c]
mov cl, byte [ecx + esi]
mov esi, dword [ebp - 0x1c]
cmp byte [eax + esi], cl
je 0x40c702
inc bl
movzx eax, bl
cmp eax, edx
jl 0x40c6f4
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x24]
movzx eax, dl
inc dl
mov dword [ebp - 0x24], edx
mov byte [ebp + eax - 0x10], bl
movzx eax, dl
cmp eax, ecx
jne 0x40cbd7
xor ecx, ecx
mov dword [ebp - 0xf4], 0x4c
mov dword [ebp - 0xf0], 0x13
xor eax, eax
mov dword [ebp - 0xec], 0xffffffa1
sub ecx, dword [ebp + eax*4 - 0xf4]
inc eax
cmp eax, 3
jl 0x40c747
push 0x1c
mov dword [ebp - 0x80], ecx
xor eax, eax
pop ecx
push 5
mov dword [ebp - 0x38], 9
mov dword [ebp - 0x34], 0x1d
mov dword [ebp - 0x30], 0x4f
mov dword [ebp - 0x2c], 0x41
mov dword [ebp - 0x28], 0xffffff64
pop edx
sub ecx, dword [ebp + eax*4 - 0x38]
xor esi, 0x1f066c92
inc eax
cmp eax, edx
jl 0x40c782
push 0xe
mov dword [ebp - 0x18], ecx
xor eax, eax
mov dword [0x44d3d4], esi
pop ecx
mov dword [ebp - 0x100], 0x46
mov dword [ebp - 0xfc], edx
mov dword [ebp - 0xf8], 0xffffffc2
sub ecx, dword [ebp + eax*4 - 0x100]
inc eax
cmp eax, 3
jl 0x40c7b9
push 0x2c
pop ebx
push 0x21
mov dword [ebp - 0x24], ecx
xor eax, eax
pop ecx
mov dword [ebp - 0x98], 0x12
mov dword [ebp - 0x94], 0x4e
mov dword [ebp - 0x90], ecx
mov dword [ebp - 0x8c], 0x5e
mov dword [ebp - 0x88], 0xffffff49
sub ebx, dword [ebp + eax*4 - 0x98]
inc eax
cmp eax, edx
jl 0x40c7ff
push 0x57
pop esi
push 0x14
pop eax
mov dword [ebp - 0x108], eax
xor eax, eax
mov dword [ebp - 0x10c], ecx
mov dword [ebp - 0x104], 0xffffff76
add esi, dword [ebp + eax*4 - 0x10c]
inc eax
cmp eax, 3
jl 0x40c829
mov dword [ebp - 0x134], 0x54
mov ecx, 0x4015b0
mov dword [ebp - 0x130], 0x3a
mov dword [ebp - 0x12c], 0x33
mov dword [ebp - 0x128], 0xffffff4a
movups xmm1, xmmword [ebp - 0x134]
mov dword [ebp - 0xc], 0x25
mov dword [ebp - 0xb4], 0x18
movaps xmm0, xmm1
mov dword [ebp - 0xb0], 0xffffffc6
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, 0x35
mov dword [ebp - 8], eax
mov al, 0x46
sub al, 0x30
cmp al, 9
ja 0x40c8cf
inc ecx
mov al, byte [ecx]
test al, al
jne 0x40c8a9
jmp 0x40c8da
mov edi, dword [0x44d3f0]
lea esi, [edi + 0x38ab129c]
mov dword [0x44d3d4], esi
jmp 0x40c6b2
imul eax, edi, 0x9f5920d0
mov dword [0x44d3d4], eax
xor edi, 0x370a1158
mov dword [0x44d3f0], edi
call fcn.0040b31d
mov ecx, dword [ebp - 0xc]
xor eax, eax
add ecx, dword [ebp + eax*4 - 0xb4]
inc eax
cmp eax, 2
jl 0x40c8f0
mov dword [ebp - 0xc], ecx
xor eax, eax
mov ecx, 0x380
mov dword [ebp - 0x118], 0x44
mov dword [ebp - 0x114], 0x57
mov dword [ebp - 0x110], 0x2a5
sub ecx, dword [ebp + eax*4 - 0x118]
inc eax
cmp eax, 3
jl 0x40c925
mov dword [ebp - 0xd0], ecx
xor ecx, ecx
mov dword [ebp - 0x124], 0x5f
xor eax, eax
mov dword [ebp - 0x120], 0x29
mov dword [ebp - 0x11c], 0xffffff78
sub ecx, dword [ebp + eax*4 - 0x124]
inc eax
cmp eax, 3
jl 0x40c95a
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0xd4], ecx
mov ecx, dword [ebp - 0x18]
mov dl, byte [ebp + edx - 0x10]
mov al, byte [ebp + eax - 0x10]
shl dl, cl
mov cl, bl
mov ebx, dword [ebp - 0x14]
shr al, cl
add dl, al
mov eax, dword [ebp - 0x20]
mov byte [ebx + eax], dl
inc ebx
movzx eax, byte [ebp + esi - 0x10]
mov dword [ebp - 0x14], ebx
cmp eax, dword [ebp - 8]
je 0x40cacf
mov dword [ebp - 0x144], 0x23
xor eax, eax
mov dword [ebp - 0x140], 7
mov dword [ebp - 0x13c], 0xd
mov dword [ebp - 0x138], 0xffffffa8
movups xmm1, xmmword [ebp - 0x144]
push 0x28
pop esi
movaps xmm0, xmm1
mov dword [ebp - 0x98], 0x48
psrldq xmm0, 8
mov edi, esi
paddd xmm1, xmm0
mov dword [ebp - 0x8c], 0x16
push 5
pop ecx
movups xmm0, xmm1
mov dword [ebp - 0x94], ecx
psrldq xmm0, 4
push 0x4b
paddd xmm1, xmm0
mov dword [ebp - 0x88], 0xffffff76
pop edx
movd ebx, xmm1
mov dword [ebp - 0x90], edx
sub edi, dword [ebp + eax*4 - 0x98]
inc eax
cmp eax, ecx
jl 0x40ca23
mov dword [ebp - 0xa4], 0x39
xor eax, eax
mov dword [ebp - 0xa0], esi
mov dword [ebp - 0x9c], 0xffffff56
add edx, dword [ebp + eax*4 - 0xa4]
inc eax
cmp eax, 3
jl 0x40ca4b
mov esi, dword [0x44d3f0]
add esi, 0x8fc413f7
mov dword [ebp - 0x38], 0x5f
xor esi, 0x1af18c4f
mov dword [ebp - 0x34], 0x39
push 0xe
pop ecx
mov dword [0x44d3d4], esi
xor eax, eax
mov dword [ebp - 0x30], 0x38
mov dword [ebp - 0x2c], 0x12
mov dword [ebp - 0x28], 0xffffff2a
sub ecx, dword [ebp + eax*4 - 0x38]
inc eax
cmp eax, 5
jl 0x40ca98
mov dl, byte [ebp + edx - 0x10]
lea eax, [esi + 0x2d26700d]
mov dword [ebp - 8], eax
mov dword [0x44d3f0], eax
mov al, byte [ebp + ebx + 0x12]
mov ebx, dword [ebp - 0x14]
shr dl, cl
mov ecx, edi
shl al, cl
add dl, al
mov eax, dword [ebp - 0x20]
mov byte [ebx + eax], dl
inc ebx
mov dword [ebp - 0x14], ebx
jmp 0x40cadd
mov eax, dword [0x44d3f0]
mov esi, dword [0x44d3d4]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
movzx eax, byte [ebp + eax - 0x10]
cmp eax, dword [ebp - 0xd0]
je 0x40cbcb
push 0x18
pop edi
mov dword [ebp - 0x98], 0x27
xor eax, eax
mov dword [ebp - 0x94], 0x36
mov dword [ebp - 0x90], 0x60
mov dword [ebp - 0x8c], 0xb
mov dword [ebp - 0x88], 0xffffff4e
sub edi, dword [ebp + eax*4 - 0x98]
inc eax
cmp eax, 5
jl 0x40cb28
mov dword [ebp - 0xc8], 0x32
xorps xmm1, xmm1
mov dword [ebp - 0xc4], 0x3c
mov dword [ebp - 0xc0], 0x40
mov dword [ebp - 0xbc], 0xffffffa0
movups xmm0, xmmword [ebp - 0xc8]
push 0x21
pop edx
psubd xmm1, xmm0
mov dword [ebp - 0x34], 0x5f
movaps xmm0, xmm1
mov dword [ebp - 0x2c], 0x15
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x28], 0xffffff12
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd ecx, xmm1
push 0x4c
pop eax
add ecx, 0x54
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x30], eax
xor eax, eax
sub edx, dword [ebp + eax*4 - 0x38]
inc eax
cmp eax, 5
jl 0x40cbad
mov al, byte [ebp + edi - 0x10]
shl al, cl
mov ecx, dword [ebp - 0x20]
add al, byte [ebp + edx - 0x10]
mov byte [ebx + ecx], al
inc ebx
mov dword [ebp - 0x14], ebx
mov dl, byte [ebp - 0xd4]
mov edi, dword [ebp - 8]
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x7c], eax
cmp eax, dword [ebp - 0xac]
jb 0x40c61e
mov edi, dword [ebp - 0x14]
jmp 0x40cbf5
mov esi, dword [0x44d3d4]
mov eax, dword [ebp - 0x20]
lea ecx, [esi - 0x1b97bf0f]
mov dword [0x44d3f0], ecx
mov ecx, dword [ebp - 0x1c]
mov byte [edi + eax], 0
call fcn.0041e600
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret