Function at 0x40b4f0
Capabilities:
Authenticate hmac
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x40
mov esi, esp
mov eax, dword [0x2371a94]
test eax, eax
jne 0x40b6b3
movzx eax, byte [0x2369450]
xor al, 0x8f
mov byte [0x2369470], al
movzx eax, byte [0x2369451]
xor al, 0xb
mov byte [0x2369471], al
movzx eax, byte [0x2369452]
xor al, 0xdf
mov byte [0x2369472], al
movzx eax, byte [0x2369453]
xor al, 0xed
mov byte [0x2369473], al
movzx eax, byte [0x2369454]
xor al, 0x44
mov byte [0x2369474], al
movzx eax, byte [0x2369455]
xor al, 0xb7
mov byte [0x2369475], al
movzx eax, byte [0x2369456]
xor al, 0x9d
mov byte [0x2369476], al
movzx eax, byte [0x2369457]
xor al, 0x3a
mov byte [0x2369477], al
movzx eax, byte [0x2369458]
xor al, 0x81
mov byte [0x2369478], al
movzx eax, byte [0x2369459]
xor al, 0xd7
mov byte [0x2369479], al
movzx eax, byte [0x236945a]
xor al, 0xee
mov byte [0x236947a], al
movzx eax, byte [0x236945b]
xor al, 0xda
mov byte [0x236947b], al
movzx eax, byte [0x236945c]
xor al, 0xf
mov byte [0x236947c], al
movzx eax, byte [0x236945d]
xor al, 0x5c
mov byte [0x236947d], al
movzx eax, byte [0x236945e]
xor al, 4
mov byte [0x236947e], al
movzx eax, byte [0x236945f]
xor al, 0x85
mov byte [0x236947f], al
movzx eax, byte [0x2369460]
xor al, 0xf7
mov byte [0x2369480], al
movzx eax, byte [0x2369461]
xor al, 0x6d
mov byte [0x2369481], al
movzx eax, byte [0x2369462]
xor al, 0xd2
mov byte [0x2369482], al
movzx eax, byte [0x2369463]
mov ecx, eax
add cl, al
and cl, 0xc6
sub al, cl
add al, 0xe3
mov byte [0x2369483], al
movzx eax, byte [0x2369438]
xor al, 0x36
mov byte [0x2369441], al
movzx eax, byte [0x2369439]
xor al, 0xa9
mov byte [0x2369442], al
movzx eax, byte [0x236943a]
xor al, 0x22
mov byte [0x2369443], al
movzx eax, byte [0x236943b]
xor al, 0x24
mov byte [0x2369444], al
movzx eax, byte [0x236943c]
mov ecx, eax
add cl, al
and cl, 0xfa
sub al, cl
add al, 0x7d
mov byte [0x2369445], al
movzx eax, byte [0x236943d]
xor al, 0x68
mov byte [0x2369446], al
movzx eax, byte [0x236943e]
xor al, 0x5f
mov byte [0x2369447], al
movzx eax, byte [0x236943f]
xor al, 0x88
mov byte [0x2369448], al
movzx eax, byte [0x2369440]
xor al, 0x88
mov byte [0x2369449], al
mov dword [0x2371a94], 1
push eax
mov edx, esp
push eax
mov dword [esi + 0x14], esp
sub esp, 0xc
mov ebx, esp
push eax
mov dword [esi + 0x18], esp
sub esp, 0x80
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
push eax
sub esp, 0x1c
mov ecx, esp
and ecx, 0xfffffff0
mov esp, ecx
push eax
sub esp, 0x1c
mov edi, esp
and edi, 0xfffffff0
mov dword [esi + 0x10], edi
mov esp, edi
push eax
sub esp, 0x1c
mov edi, esp
and edi, 0xfffffff0
mov dword [esi + 0xc], edi
mov esp, edi
push eax
sub esp, 0x10
mov dword [esi + 0x24], esp
push eax
mov dword [esi + 0x1c], esp
sub esp, 0x20
mov edi, esp
and edi, 0xfffffff0
mov dword [esi + 0x20], edi
mov esp, edi
mov dword [esi + 0x2c], edx
mov edi, dword [ebp + 8]
mov dword [edx], edi
mov edx, dword [esi + 0x14]
mov byte [edx], 0
movzx edx, byte [0x2369449]
mov byte [ebx + 8], dl
mov edx, dword [0x2369445]
mov dword [ebx + 4], edx
mov edx, dword [0x2369441]
mov dword [esi + 0x28], ebx
mov dword [ebx], edx
mov dword [eax], 0x7b8979a3
mov dword [eax + 4], 0x7f887d84
mov dword [eax + 8], 0x738e7199
mov dword [eax + 0xc], 0x774b7586
mov dword [eax + 0x10], 0xb8309a2
mov dword [eax + 0x14], 0xfeb0dfa
mov dword [eax + 0x18], 0x32001c4
mov dword [eax + 0x1c], 0x7f405e1
mov dword [eax + 0x20], 0x1be419f6
mov dword [eax + 0x24], 0x1ff91de1
mov dword [eax + 0x28], 0x13e411fd
mov dword [eax + 0x2c], 0x17e515e9
mov dword [eax + 0x30], 0x2b1929e8
mov dword [eax + 0x34], 0x2f132da2
mov dword [eax + 0x38], 0x23a921a7
mov dword [eax + 0x3c], 0x271b25ab
mov dword [eax + 0x40], 0x3bc939c0
mov dword [eax + 0x44], 0x3fc33dc8
mov dword [eax + 0x48], 0x33c73101
mov dword [eax + 0x4c], 0x37c835c0
mov dword [eax + 0x50], 0xcb36c9d1
mov dword [eax + 0x54], 0xcf3dcd2f
mov dword [eax + 0x58], 0xc327c12a
mov dword [eax + 0x5c], 0xc7dbc526
mov dword [eax + 0x60], 0xdbd8d9dc
mov word [eax + 0x7c], 0
mov dword [eax + 0x78], 0
mov dword [eax + 0x74], 0
mov dword [eax + 0x70], 0
mov dword [eax + 0x6c], 0
mov dword [eax + 0x68], 0
mov dword [eax + 0x64], 0
mov dword [esi + 8], 0
mov edx, dword [esi + 8]
cmp edx, 0x7d
ja 0x40b869
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esi + 8]
mov edi, dword [esi + 8]
movzx edi, byte [eax + edi]
lea ebx, [edx + 0x2f]
and ebx, edi
add edx, edi
add ebx, ebx
sub edx, ebx
add dl, 0xe6
mov edi, dword [esi + 8]
mov byte [eax + edi], dl
inc dword [esi + 8]
mov edx, dword [esi + 8]
cmp edx, 0x7e
jb 0x40b840
mov dword [ecx], 0x23832d5f
mov dword [ecx + 4], 0x279f2190
mov word [ecx + 8], 0x2524
mov dword [ecx + 0xa], 0
mov dword [ecx + 0xe], 0
mov dword [ecx + 0x12], 0
mov dword [ecx + 0x16], 0
mov byte [ecx + 0x1a], 0
mov dword [esi + 8], 0
mov edx, dword [esi + 8]
cmp edx, 0x1a
ja 0x40b8e9
nop
nop
nop
nop
nop
mov edi, dword [esi + 8]
mov edx, dword [esi + 8]
movzx edx, byte [ecx + edx]
mov ebx, edi
xor ebx, 0xbf5a4186
and edi, 0x3f5a4186
lea edi, [ebx + edi*2]
mov ebx, edi
and ebx, edx
add edx, edi
add ebx, ebx
sub edx, ebx
add dl, 0x56
mov edi, dword [esi + 8]
mov byte [ecx + edi], dl
inc dword [esi + 8]
mov edx, dword [esi + 8]
cmp edx, 0x1b
jb 0x40b8b0
push 0
mov edi, dword [esi + 0x18]
push edi
push 8
push dword [esi + 0x28]
push eax
push ecx
mov eax, dword [esi + 0x2c]
push dword [eax]
call fcn.0040bc70
add esp, 0x1c
test al, al
mov ebx, dword [esi + 0x10]
je 0x40bc1d
mov dword [ebx], 0
mov dword [ebx + 0x1b], 0
mov dword [ebx + 0x18], 0
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x10], 0
mov dword [ebx + 0xc], 0
mov dword [ebx + 8], 0
mov dword [ebx + 4], 0
mov word [ebx], 0x829f
mov byte [ebx + 2], 0x72
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x1e
ja 0x40b991
nop
nop
nop
mov ecx, dword [esi + 8]
mov eax, dword [esi + 8]
movzx edx, byte [ebx + eax]
lea eax, [ecx + edx]
add eax, 0x474493ae
add ecx, 0x474493ae
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x3e
mov ecx, dword [esi + 8]
mov byte [ebx + ecx], al
inc dword [esi + 8]
mov eax, dword [esi + 8]
cmp eax, 0x1f
jb 0x40b960
mov eax, dword [edi]
xor ecx, ecx
mov ebx, dword [esi + 0xc]
mov edi, dword [esi + 0x10]
nop
nop
nop
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [edi + ecx]
test dl, dl
je 0x40b9b0
inc ecx
cmp dl, dh
je 0x40b9a0
cmp dl, dh
jne 0x40b9bf
mov ecx, dword [esi + 0x14]
mov byte [ecx], 1
jmp 0x40bc14
mov dword [ebx], 0xb7a5a0b3
mov dword [ebx + 4], 0x17a4baa1
mov dword [ebx + 8], 0
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x10], 0
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x13
ja 0x40ba30
mov eax, dword [esi + 8]
mov ecx, dword [esi + 8]
movzx ecx, byte [ebx + ecx]
lea edx, [eax + 0xaa]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
mov ecx, 0x8acadd55
sub ecx, eax
add eax, 0x7535232a
and ecx, 0xa6
and eax, 0x59
sub eax, ecx
mov ecx, dword [esi + 8]
mov byte [ebx + ecx], al
inc dword [esi + 8]
mov eax, dword [esi + 8]
cmp eax, 0x14
jb 0x40b9f0
mov eax, dword [esi + 0x18]
mov eax, dword [eax]
movzx ecx, byte [ebx]
mov edi, eax
test cl, cl
je 0x40ba6f
mov edx, dword [esi + 0xc]
mov ebx, eax
mov edi, eax
jmp 0x40ba5d
inc edi
mov ebx, edi
mov edx, dword [esi + 0xc]
movzx ecx, byte [edx]
test cl, cl
je 0x40ba6f
mov ch, byte [ebx]
test ch, ch
je 0x40bc14
cmp ch, cl
jne 0x40ba50
inc ebx
inc edx
jmp 0x40ba56
test edi, edi
je 0x40bc14
mov ecx, dword [0x2369480]
mov edx, dword [esi + 0x24]
mov dword [edx + 0x10], ecx
mov ecx, dword [0x236947c]
mov dword [edx + 0xc], ecx
mov ecx, dword [0x2369478]
mov dword [edx + 8], ecx
mov ecx, dword [0x2369474]
mov dword [edx + 4], ecx
mov ebx, dword [0x2369470]
mov dword [edx], ebx
test bl, bl
je 0x40bad0
mov edi, eax
jmp 0x40babd
inc edi
mov eax, edi
mov edx, dword [esi + 0x24]
movzx ebx, byte [edx]
test bl, bl
je 0x40bad2
movzx ecx, byte [eax]
test cl, cl
je 0x40bc0f
cmp cl, bl
jne 0x40bab0
inc eax
inc edx
jmp 0x40bab6
mov edi, eax
test edi, edi
je 0x40bc0f
add edi, 0x13
mov eax, dword [esi + 0x1c]
mov dword [eax], edi
mov ebx, dword [esi + 0x20]
mov dword [ebx], 0
mov dword [ebx + 0x18], 0
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x10], 0
mov dword [ebx + 0xc], 0
mov dword [ebx + 8], 0
mov dword [ebx + 4], 0
mov word [ebx], 0xefc2
mov byte [ebx + 2], 0x2a
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x1b
ja 0x40bb69
nop
nop
nop
mov edx, dword [esi + 8]
mov eax, dword [esi + 8]
movzx ecx, byte [ebx + eax]
lea eax, [edx - 0x39fb5326]
add edx, 0xda
and edx, ecx
or eax, ecx
sub eax, edx
mov ecx, eax
or ecx, 9
and eax, 9
add eax, ecx
inc al
mov ecx, dword [esi + 8]
mov byte [ebx + ecx], al
inc dword [esi + 8]
mov eax, dword [esi + 8]
cmp eax, 0x1c
jb 0x40bb30
movzx edx, byte [ebx]
test dl, dl
je 0x40bb9c
mov eax, ebx
mov ebx, edi
jmp 0x40bb8d
inc ebx
mov edi, ebx
mov eax, dword [esi + 0x20]
movzx edx, byte [eax]
test dl, dl
je 0x40bba0
movzx ecx, byte [edi]
test cl, cl
je 0x40bc0f
cmp cl, dl
jne 0x40bb80
inc edi
inc eax
jmp 0x40bb86
mov ebx, edi
jmp 0x40bba4
test ebx, ebx
je 0x40bc0f
mov byte [0x2371ea8], 1
mov eax, dword [esi + 0x1c]
mov edi, dword [eax]
mov dword [esi + 8], 0
mov ecx, 0x2371eaa
mov dword [esi + 0xc], ebx
cmp ebx, edi
jbe 0x40bc04
mov ebx, dword [esi + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x40bc04
lea eax, [esi + 8]
push eax
push ebx
push edi
mov dword [esi + 0x10], ecx
call fcn.00411fc0
add esp, 0xc
movzx ecx, word [esi + 8]
mov edx, dword [esi + 0x10]
mov word [edx], cx
mov ecx, dword [esi + 0x10]
add ecx, 2
cmp ecx, 0x23720a8
jae 0x40bc04
add edi, eax
cmp edi, ebx
jb 0x40bbd0
mov word [ecx], 0
mov eax, dword [esi + 0x14]
mov byte [eax], 1
mov eax, dword [esi + 0x18]
mov eax, dword [eax]
push eax
call fcn.004313d0
add esp, 4
mov eax, dword [esi + 0x14]
movzx eax, byte [eax]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret