Function at 0x439650
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, 0xfffffff8
sub esp, 0xa0
mov eax, dword [0x34cdd0]
mov dword [esp + 8], eax
mov dword [esp + 0x14], 0x13c111ed
mov dword [esp + 0x18], 0xef5ded65
mov dword [esp + 0x1c], 0xeb57e964
mov dword [esp + 0x20], 0xe73ae551
mov dword [esp + 0x24], 0xe35be152
mov dword [esp + 0x28], 0xff43fd72
mov dword [esp + 0x2c], 0xfbfaf905
mov dword [esp + 0x30], 0
mov ecx, 0x3d3f820f
xor edi, edi
mov eax, 0xf4fe083
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x3d3f81fb]
mov esi, eax
or esi, ebx
add esi, esi
mov edx, edi
sub edx, esi
add ebx, ecx
add edx, ebx
and ebx, 1
xor edx, 1
lea edx, [edx + ebx*2]
add dl, 6
mov byte [esp + ecx - 0x3d3f81fb], dl
inc ecx
add edi, 0xfffffffe
dec eax
cmp eax, 0xf4fe063
jne 0x4396c0
lea eax, [esp + 0x58]
lea ebx, [esp + 0x8c]
lea esi, [esp + 0x14]
push eax
push 8
push ebx
push 0xd
push esi
push 0
call dword [esp + 0x20]
test eax, eax
jns 0x439720
mov dword [esp + 0x8c], 0x3a0043
mov dword [esp + 0x90], 0x5c
mov dword [esp + 0x64], 0x2f90fb78
mov dword [esp + 0x60], 0x3cd0969a
mov dword [esp + 0x5c], 0xd80b3af7
mov dword [esp + 0x58], 0x9f12624d
mov dword [esp + 0x10], 0
lea eax, [esp + 0x10]
push eax
push 0x343668
push 1
push 0
push 0x343678
call dword [0x343da8]
test eax, eax
mov edi, dword [ebp + 8]
js 0x439c51
mov dword [esp + 0x14], 0x77c509b6
mov dword [esp + 0x18], 0x73ce75c7
mov dword [esp + 0x1c], 0x7f3171d4
mov dword [esp + 0x20], 0x7bcf7d35
mov dword [esp + 0x24], 0x673879c2
mov dword [esp + 0x28], 0x6564
xor eax, eax
mov cl, 0x41
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x14]
xor dl, cl
mov ch, 0x49
sub ch, dl
mov byte [esp + eax + 0x14], ch
inc eax
dec cl
cmp eax, 0x18
jne 0x4397b0
push esi
call dword [0x343dc0]
mov ebx, eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0xc]
push edx
push 0
push 0
push 0
push 0
push 0
push 0
mov dword [esp + 0x24], ebx
push ebx
push eax
call dword [ecx + 0xc]
test eax, eax
lea ebx, [esp + 0x8c]
js 0x439c3d
push 0
push 0
push 3
push 3
push 0
push 0
push 0xa
push dword [esp + 0x28]
call dword [0x343db4]
test eax, eax
js 0x439c33
mov dword [esp + 0x14], 0x33e331ef
mov dword [esp + 0x18], 0x3f3e3de8
mov word [esp + 0x1c], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x74
xor cl, byte [esp + eax + 0x14]
add cl, 0xbc
mov byte [esp + eax + 0x14], cl
inc eax
cmp eax, 0xa
jne 0x439840
push esi
call dword [0x343dc0]
mov ebx, eax
mov dword [esp + 0x14], 0x71490fb9
mov dword [esp + 0x18], 0x7535733c
mov dword [esp + 0x1c], 0x79c27731
mov dword [esp + 0x20], 0x7d107b18
mov dword [esp + 0x24], 0x61387f1c
mov dword [esp + 0x28], 0x65d363d2
mov dword [esp + 0x2c], 0x6906672b
mov dword [esp + 0x30], 0x6dc16bd1
mov dword [esp + 0x34], 0x513b6fc2
mov dword [esp + 0x38], 0x55f35302
mov dword [esp + 0x3c], 0x591d5716
mov dword [esp + 0x40], 0x5def5be9
mov word [esp + 0x44], 0x5f5c
mov dword [esp + 0x46], 0
xor eax, eax
mov ecx, eax
add cl, 0xbd
xor cl, byte [esp + eax + 0x14]
add cl, 0x4f
mov byte [esp + eax + 0x14], cl
inc eax
cmp eax, 0x36
jne 0x4398d0
push esi
call dword [0x343dc0]
mov esi, dword [esp + 0xc]
mov ecx, dword [esi]
lea edx, [esp + 0x54]
push edx
push 0
push 0x30
mov dword [esp + 0x80], eax
push eax
push ebx
push esi
call dword [ecx + 0x50]
test eax, eax
js 0x439c19
mov dword [esp + 0x4c], 0
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
lea edx, [esp + 0x4c]
lea esi, [esp + 0x50]
push edx
push esi
push 1
push 0xffffffffffffffff
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x439c0f
cmp eax, 1
je 0x439c0f
cmp dword [esp + 0x4c], 0
je 0x439c0f
mov dword [esp + 0x70], ebx
lea eax, [esp + 0x78]
push eax
call dword [0x343dcc]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x14], 0x71d97fa9
mov dword [esp + 0x18], 0x75c973c2
mov dword [esp + 0x1c], 0x49ca77d7
mov dword [esp + 0x20], 0x4dfd4b96
mov dword [esp + 0x24], 0x41ec4ff3
mov dword [esp + 0x28], 0x45f043e7
mov word [esp + 0x2c], 0x4744
mov dword [esp + 0x2e], 0
mov byte [esp + 0x32], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x2a
mov ebx, edx
xor ebx, 0x15
add ebx, esi
xor bl, byte [esp + edx + 0x14]
add bl, 0x97
mov byte [esp + edx + 0x14], bl
inc edx
add ecx, 2
cmp edx, 0x1f
jne 0x4399b0
mov ecx, dword [eax]
push 0
push 0
lea esi, [esp + 0x80]
push esi
push 0
lea edx, [esp + 0x24]
push edx
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x439bfa
cmp word [esp + 0x78], 8
jne 0x439bfa
mov eax, dword [esp + 0x80]
movzx ebx, word [eax]
test bx, bx
mov dword [esp], eax
je 0x439a53
add eax, 2
xor edx, edx
mov ecx, ebx
jmp 0x439a2c
inc edx
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0x439a55
cmp cx, 0x7f
jbe 0x439a20
mov esi, edx
movzx edx, cx
cmp edx, 0x7ff
ja 0x439a46
mov edx, esi
add edx, 2
jmp 0x439a21
cmp cx, 0xffff
mov edx, esi
je 0x439a21
add edx, 3
jmp 0x439a21
xor edx, edx
mov esi, edx
and esi, 1
mov dword [esp + 0x6c], edx
xor edx, 1
mov dword [esp + 0x68], edx
lea eax, [edx + esi*2]
push eax
call fcn.004086e0
add esp, 4
mov edx, eax
mov dword [esp + 4], eax
test bx, bx
mov ecx, dword [esp]
je 0x439bac
mov eax, dword [esp + 0x68]
lea esi, [eax + esi*2]
dec esi
mov edx, dword [esp + 4]
test esi, esi
je 0x439bac
mov edx, dword [esp + 4]
nop
nop
nop
nop
nop
movzx ebx, bx
lea eax, [ecx + 2]
cmp bx, 0x7f
ja 0x439ac0
mov byte [edx], bl
lea ecx, [edx + 1]
jmp 0x439b50
cmp ebx, 0x7ff
ja 0x439ae5
cmp esi, 2
jb 0x439ae5
mov ecx, ebx
shr ecx, 6
add cl, 0xc0
mov byte [edx], cl
and bl, 0x3f
or bl, 0x80
lea ecx, [edx + 2]
mov byte [edx + 1], bl
jmp 0x439b50
mov dword [esp], eax
mov eax, ecx
mov ecx, ebx
and ecx, 0xfc00
cmp ecx, 0xd800
jne 0x439b6a
cmp esi, 4
jb 0x439b6a
mov ecx, eax
movzx eax, word [eax + 2]
add ecx, 4
mov dword [esp], ecx
shl ebx, 0xa
lea ecx, [ebx + eax]
add ecx, 0xfca02400
mov ebx, ecx
shr ebx, 0x12
add bl, 0xf0
mov byte [edx], bl
mov ebx, ecx
shr ebx, 0xc
and bl, 0x3f
or bl, 0x80
mov byte [edx + 1], bl
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [edx + 2], cl
and al, 0x3f
or al, 0x80
lea ecx, [edx + 4]
mov byte [edx + 3], al
mov eax, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
add esi, edx
sub esi, ecx
mov edx, ecx
mov ecx, eax
movzx ebx, word [ecx]
test bx, bx
je 0x439bac
test esi, esi
jne 0x439aa0
jmp 0x439bac
movzx ecx, cx
cmp ecx, 0xdc00
jne 0x439b7a
mov ecx, dword [esp]
jmp 0x439b58
cmp esi, 3
mov eax, dword [esp]
jb 0x439ba8
mov ecx, ebx
shr ecx, 0xc
or cl, 0xe0
mov byte [edx], cl
mov ecx, ebx
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [edx + 1], cl
and bl, 0x3f
or bl, 0x80
lea ecx, [edx + 3]
mov byte [edx + 2], bl
jmp 0x439b50
mov ecx, edx
jmp 0x439b50
mov ebx, dword [esp + 4]
mov byte [edx], 0
mov eax, 3
mov ecx, dword [esp + 0x6c]
sub eax, ecx
cmp eax, 0xfffffffd
jae 0x439bc8
mov eax, 0xfffffffc
add eax, ecx
shr eax, 2
cmp eax, 3
lea esi, [esp + 0x78]
jb 0x439bdb
mov eax, 3
lea eax, [eax*4 + 4]
push eax
push ebx
lea eax, [esp + 0x60]
push eax
call fcn.00408710
add esp, 0xc
push ebx
call fcn.004086f0
add esp, 4
push esi
call dword [0x343dc8]
mov eax, dword [esp + 0x50]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ebx, dword [esp + 0x70]
mov eax, dword [esp + 0x54]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [0x343dc4]
push ebx
call esi
push dword [esp + 0x74]
call esi
lea esi, [esp + 0x14]
lea ebx, [esp + 0x8c]
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [esp + 8]
call dword [0x343dc4]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 0xbeb8f1a1
push dword [0x34cdc8]
call fcn.0043fdc0
add esp, 8
push 0
push 0
push 0
push 0
push esi
push 0
push 0
push ebx
call eax
test eax, eax
je 0x439c80
mov eax, dword [esp + 0x14]
mov dword [esp + 0x58], eax
xor esi, esi
jmp 0x439ca7
add edi, 8
mov eax, esi
and eax, 1
xor esi, 1
lea esi, [esi + eax*2]
cmp esi, 4
jae 0x439d33
mov eax, 0
test esi, esi
je 0x439cba
cmp dword [esp + esi*4 + 0x58], 1
mov eax, esi
sbb eax, 0
mov eax, dword [esp + eax*4 + 0x58]
mov ecx, eax
and ecx, 0x1a5845
mov edx, eax
or eax, 0x1a5845
imul eax, ecx
xor ecx, 0x1a5845
and edx, 0xffe5a7ba
imul edx, ecx
add eax, edx
add eax, 0xebde8a13
mov dword [esp + esi*4 + 0x58], eax
mov ebx, 0xffffffff
push 0x10
push 9
push edi
push eax
call fcn.00420b00
add esp, 0x10
nop
nop
nop
cmp byte [eax + ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x439d00
mov ecx, ebx
and ecx, 0xfffffff7
not ebx
and ebx, 8
mov edx, ebx
sub edx, ecx
je 0x439c90
sub ecx, ebx
add eax, ecx
push edx
push 0x30
push eax
call fcn.00408880
add esp, 0xc
jmp 0x439c90
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret