Function at 0x421d70
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x148
cmp byte [ebp + 0x18], 0
je 0x421e53
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040c7d0
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043e770
test eax, eax
js 0x421e53
mov dword [esp], 0x1a13186a
mov byte [esp + 4], 0xfc
mov dword [esp + 5], 0
mov byte [esp + 9], 0
mov eax, 0x17dd2baa
mov ecx, 0xe822d455
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea esi, [ecx + 0x17dd2c00]
mov edi, esi
and edi, 6
mov edx, eax
and edx, 0x19
or edx, edi
movzx edi, byte [esp + eax - 0x17dd2baa]
xor edx, 0x59
or edx, esi
mov esi, ecx
or esi, edi
and edx, edi
xor edx, esi
lea ebx, [edx + edx]
not ebx
add ebx, edx
add bl, 0xae
mov byte [esp + eax - 0x17dd2baa], bl
inc eax
dec ecx
cmp eax, 0x17dd2bb4
jne 0x421df0
cmp byte [esp + 0x3f], 0
js 0x421e5a
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x421eb5
xor eax, eax
jmp 0x422300
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x421ead
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040c730
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043e770
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x421ea2
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c740
add esp, 4
jmp 0x421eb5
mov dword [esp + 0x10], 0
mov dword [esp], 0x46425c4a
mov word [esp + 4], 0x3357
mov dword [esp + 6], 0
xor eax, eax
nop
nop
nop
movzx edx, byte [esp + eax]
mov ecx, eax
xor ecx, 0x44a57dca
mov esi, eax
or esi, 5
and esi, ecx
mov ecx, eax
xor ecx, 0x3b5a8235
lea ecx, [ecx + esi*2]
xor ecx, edx
mov edx, 9
sub edx, ecx
add ecx, 0x36
and edx, 0xda
and ecx, 0x25
sub ecx, edx
add cl, 0xdb
mov byte [esp + eax], cl
inc eax
cmp eax, 0xa
jne 0x421ed0
cmp byte [esp + 0x11f], 0
js 0x421f35
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov bl, 1
jmp 0x421f8f
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x421f8d
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040c730
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043e770
test eax, eax
setns bl
js 0x421f82
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c740
add esp, 4
jmp 0x421f8f
xor ebx, ebx
mov edx, dword [esp + 0x10]
and dl, bl
mov dword [esp], 0xedebf6fc
mov dword [esp + 4], 0xd6fdf6c1
mov byte [esp + 8], 0x5c
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x99
xor cl, byte [esp + eax]
add cl, 3
mov byte [esp + eax], cl
inc eax
cmp eax, 0x10
jne 0x421fc0
cmp byte [esp + 0x57], 0
js 0x421ff6
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
mov esi, edx
call fcn.00405db0
mov edx, esi
add esp, 0xc
mov bl, 1
jmp 0x42204f
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x42204d
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040c730
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043e770
test eax, eax
setns bl
js 0x42203e
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c740
add esp, 4
mov edx, dword [esp + 0x10]
jmp 0x42204f
xor ebx, ebx
and dl, bl
mov dword [esp + 0x10], edx
mov dword [esp], 0x11e0c14
mov byte [esp + 4], 0xe8
mov dword [esp + 5], 0
mov eax, 0x4df024e3
mov edi, 0x9be049c6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x4df024e3]
mov dword [esp + 0x14], ecx
mov esi, edi
and esi, 0x8ae0484e
mov ebx, eax
xor ebx, 0xd57a3e27
lea edx, [esi + ebx]
add esi, ebx
add esi, 0x1d
and esi, ecx
mov ecx, esi
or ecx, 0xfd
inc ecx
mov ebx, esi
and ebx, 0xfffffffd
imul ebx, ecx
mov ecx, esi
and ecx, 2
or esi, 2
imul esi, ecx
sub ebx, esi
add edx, dword [esp + 0x14]
add edx, ebx
add dl, 0x5a
mov byte [esp + eax - 0x4df024e3], dl
inc eax
add edi, 2
cmp eax, 0x4df024ec
jne 0x422080
cmp byte [esp + 0x6f], 0
js 0x4220fd
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov bl, 1
jmp 0x42214e
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x42214c
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040c730
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043e770
test eax, eax
setns bl
js 0x422141
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c740
add esp, 4
jmp 0x42214e
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x120]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x124]
mov dword [esp], 0x467a734f
mov dword [esp + 4], 0x4c7b447e
mov dword [esp + 8], 0xd1774777
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
mov edx, 0x41096557
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx - 0x41096557]
mov esi, edx
and esi, edi
mov eax, esi
or eax, 0xfffffffd
inc eax
mov ebx, esi
and ebx, 0x7d
imul ebx, eax
mov eax, esi
and eax, 2
or esi, 2
imul esi, eax
add ebx, edi
sub ebx, esi
add ebx, edx
mov eax, ebx
and eax, 0x3ad1054c
xor ebx, 0xbad1054c
lea eax, [ebx + eax*2]
add eax, 0x4cc61c62
mov esi, eax
and esi, 0x1f
xor eax, 0x9f
lea eax, [eax + esi*2]
mov byte [esp + edx - 0x41096557], al
inc edx
cmp edx, 0x41096566
jne 0x4221a0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea ebx, [esp + 0x10]
mov dword [esp + 4], ebx
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405e00
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0x7c4b7e4b
mov dword [esp + 4], 0x7b754a43
mov dword [esp + 8], 0xd347
mov ecx, 0xef7afb57
nop
nop
nop
movzx edx, byte [esp + ecx + 0x108504a9]
xor edx, ecx
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
add dl, 0x4c
mov byte [esp + ecx + 0x108504a9], dl
inc ecx
cmp ecx, 0xef7afb63
jne 0x422250
push eax
push ebx
push dword [ebp + 0x14]
call fcn.00405e90
add esp, 0xc
mov esi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp], 0x7f7a7d70
mov dword [esp + 4], 0x7f707e6f
mov dword [esp + 8], 0x189
mov byte [esp + 0xc], 0
or esi, edi
mov ecx, 0x82
mov edx, 0x7d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x82]
mov ebx, edx
xor ebx, ecx
and ebx, edi
xor ebx, ecx
add bl, 0x76
mov byte [esp + ecx - 0x82], bl
inc ecx
dec edx
cmp ecx, 0x8f
jne 0x4222c0
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405e90
add esp, 0xc
or esi, eax
sete cl
mov eax, dword [esp + 0x10]
and al, cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret