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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x338
mov eax, dword [0x1013a420]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x2f4], eax
mov eax, dword [ebp + 0xc]
push ebx
mov dword [ebp - 0x300], eax
mov ebx, 0x40
mov eax, dword [ebp + 0x14]
push esi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x2e0], eax
mov eax, dword [ebp + 0x18]
push edi
mov edi, dword [ebp + 0x20]
mov dword [ebp - 0x2d4], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0x314], esi
mov dword [ebp - 0x2f8], eax
mov dword [ebp - 0x2e4], ebx
mov dword [ebp - 0x2f0], 0x28
mov dword [ebp - 0x2b8], 8
mov byte [ebp - 0x2ad], 1
cmp edi, 0x100000
jb 0x100df754
push str.data_plus_mac_plus_padding_size___10241024
push 0x1b3
push str.s3_cbc.c
call fcn.10061a10
add esp, 0xc
push dword [ebp - 0x2f4]
call fcn.10058ef0
push eax
call fcn.1008d4e0
add esp, 8
cmp eax, 0x2a0
jg 0x100df813
je 0x100df7e9
cmp eax, 4
je 0x100df7ad
cmp eax, 0x40
jne 0x100df820
lea eax, [ebp - 0x2ac]
push eax
call fcn.100a41a0
mov dword [ebp - 0x2d0], 0x100e0200
mov ecx, 0x14
mov dword [ebp - 0x2b4], 0x1007cb00
jmp 0x100df8c7
lea eax, [ebp - 0x2ac]
push eax
call fcn.100532d0
mov edx, 0x30
mov dword [ebp - 0x2d0], 0x100e0180
mov dword [ebp - 0x2b4], 0x10053310
mov ecx, 0x10
mov dword [ebp - 0x2f0], edx
mov byte [ebp - 0x2ad], 0
jmp 0x100df8cc
lea eax, [ebp - 0x2ac]
push eax
call fcn.1007e2c0
mov dword [ebp - 0x2d0], 0x100e02a0
mov ecx, 0x20
mov dword [ebp - 0x2b4], 0x1007e320
jmp 0x100df8c7
sub eax, 0x2a1
je 0x100df88d
dec eax
je 0x100df87d
dec eax
je 0x100df856
push 0x1013287c
push 0x1e9
push str.s3_cbc.c
call fcn.10061a10
add esp, 0xc
test esi, esi
je 0x100dff45
pop edi
mov dword [esi], 0xffffffff
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003890f
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x2ac]
push eax
call fcn.1007df80
mov dword [ebp - 0x2d0], 0x100e02a0
mov ecx, 0x1c
mov dword [ebp - 0x2b4], 0x1007e320
jmp 0x100df8c7
lea eax, [ebp - 0x2ac]
push eax
call fcn.1007fa10
mov ecx, ebx
jmp 0x100df89e
lea eax, [ebp - 0x2ac]
push eax
call fcn.1007f3d0
mov ecx, 0x30
mov ebx, 0x80
mov dword [ebp - 0x2b8], 0x10
mov dword [ebp - 0x2e4], ebx
mov dword [ebp - 0x2b4], 0x1007fac0
mov dword [ebp - 0x2d0], 0x100e0390
mov edx, 0x28
add esp, 4
mov dword [ebp - 0x2bc], ecx
cmp byte [ebp + 0x2c], 0
mov eax, 0xd
mov dword [ebp - 0x2ec], eax
je 0x100df8f4
mov eax, dword [ebp + 0x28]
add eax, 0xb
add eax, edx
mov dword [ebp - 0x2ec], eax
xor edx, edx
mov esi, eax
cmp byte [ebp + 0x2c], dl
mov eax, dword [ebp - 0x2b8]
sete dl
dec eax
sub esi, ecx
xor ecx, ecx
add eax, esi
add esi, dword [ebp + 0x1c]
add eax, ebx
lea edx, [edx*4 + 2]
add eax, edi
mov dword [ebp - 0x2d8], edx
xor edi, edi
xor edx, edx
mov dword [ebp - 0x2c4], edi
div ebx
xor edx, edx
mov dword [ebp - 0x2cc], eax
xor eax, eax
mov dword [ebp - 0x2dc], eax
mov eax, esi
div ebx
mov dword [ebp - 0x310], eax
mov eax, dword [ebp - 0x2b8]
mov dword [ebp - 0x2e8], edx
add eax, esi
xor edx, edx
div ebx
cmp byte [ebp + 0x2c], cl
mov edx, dword [ebp - 0x2d8]
setne cl
mov dword [ebp - 0x318], eax
mov eax, dword [ebp - 0x2cc]
add ecx, edx
cmp eax, ecx
jbe 0x100df988
sub eax, edx
mov edi, eax
mov dword [ebp - 0x2dc], eax
imul edi, ebx
mov dword [ebp - 0x2c4], edi
cmp byte [ebp + 0x2c], 0
lea eax, [esi*8]
mov dword [ebp - 0x2c0], eax
jne 0x100dfa28
lea eax, [eax + ebx*8]
push ebx
mov dword [ebp - 0x2c0], eax
lea eax, [ebp - 0x94]
push 0
push eax
call fcn.1003e9c0
mov esi, dword [ebp + 0x28]
add esp, 0xc
cmp esi, 0x80
jbe 0x100df9dc
push str.mac_secret_length___sizeof_hmac_pad_
push 0x242
push str.s3_cbc.c
call fcn.10061a10
add esp, 0xc
push esi
push dword [ebp - 0x2f8]
lea eax, [ebp - 0x94]
push eax
call fcn.1003da60
add esp, 0xc
xor eax, eax
test ebx, ebx
je 0x100dfa0d
jmp 0x100dfa00
xor byte [ebp + eax - 0x94], 0x36
inc eax
cmp eax, ebx
jb 0x100dfa00
mov esi, dword [ebp - 0x2b4]
lea eax, [ebp - 0x94]
push eax
lea eax, [ebp - 0x2ac]
push eax
call esi
add esp, 8
jmp 0x100dfa2e
mov esi, dword [ebp - 0x2b4]
cmp byte [ebp - 0x2ad], 0
je 0x100dfa7c
mov eax, dword [ebp - 0x2b8]
add eax, 0xfffffffc
push eax
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.1003e9c0
mov ecx, dword [ebp - 0x2c0]
add esp, 0xc
mov edx, dword [ebp - 0x2b8]
mov eax, ecx
shr eax, 0x18
mov byte [ebp + edx - 0x18], al
mov eax, ecx
shr eax, 0x10
mov byte [ebp + edx - 0x17], al
mov eax, ecx
shr eax, 8
mov byte [ebp + edx - 0x16], al
mov byte [ebp + edx - 0x15], cl
jmp 0x100dfabb
push dword [ebp - 0x2b8]
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.1003e9c0
mov ecx, dword [ebp - 0x2c0]
add esp, 0xc
mov edx, dword [ebp - 0x2b8]
mov eax, ecx
shr eax, 0x18
mov byte [ebp + edx - 0x19], al
mov eax, ecx
shr eax, 0x10
mov byte [ebp + edx - 0x1a], al
mov eax, ecx
shr eax, 8
mov byte [ebp + edx - 0x1b], al
mov byte [ebp + edx - 0x1c], cl
test edi, edi
je 0x100dfbfc
cmp byte [ebp + 0x2c], 0
je 0x100dfb70
mov esi, dword [ebp - 0x2ec]
lea eax, [ebp - 0x2ac]
push dword [ebp - 0x2e0]
sub esi, ebx
push eax
mov dword [ebp - 0x2cc], esi
call dword [ebp - 0x2b4]
mov eax, dword [ebp - 0x2e0]
add eax, ebx
push esi
push eax
lea eax, [ebp - 0x154]
push eax
call fcn.1003da60
mov eax, ebx
sub eax, esi
push eax
push dword [ebp - 0x2d4]
lea eax, [ebp - 0x154]
add eax, esi
push eax
call fcn.1003da60
lea eax, [ebp - 0x154]
push eax
lea eax, [ebp - 0x2ac]
push eax
call dword [ebp - 0x2b4]
xor edx, edx
mov eax, edi
div ebx
add esp, 0x28
dec eax
cmp eax, 1
jbe 0x100dfbfc
mov esi, dword [ebp - 0x2d4]
lea edi, [eax - 1]
sub esi, dword [ebp - 0x2cc]
add esi, ebx
lea eax, [ebp - 0x2ac]
push esi
push eax
call dword [ebp - 0x2b4]
add esp, 8
add esi, ebx
dec edi
jne 0x100dfb55
jmp 0x100dfbf6
mov ecx, dword [ebp - 0x2e0]
mov eax, dword [ecx]
mov dword [ebp - 0x154], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x150], eax
mov eax, dword [ecx + 8]
mov dword [ebp - 0x14c], eax
mov al, byte [ecx + 0xc]
mov byte [ebp - 0x148], al
lea eax, [ebx - 0xd]
push eax
push dword [ebp - 0x2d4]
lea eax, [ebp - 0x147]
push eax
call fcn.1003da60
lea eax, [ebp - 0x154]
push eax
lea eax, [ebp - 0x2ac]
push eax
call esi
xor edx, edx
mov eax, edi
div ebx
add esp, 0x14
cmp eax, 1
jbe 0x100dfbfc
mov esi, dword [ebp - 0x2d4]
lea edi, [eax - 1]
add esi, 0xfffffff3
add esi, ebx
jmp 0x100dfbe0
lea eax, [ebp - 0x2ac]
push esi
push eax
call dword [ebp - 0x2b4]
add esp, 8
add esi, ebx
dec edi
jne 0x100dfbe0
mov edi, dword [ebp - 0x2c4]
push 0x40
lea eax, [ebp - 0xd4]
push 0
push eax
call fcn.1003e9c0
mov eax, dword [ebp - 0x2d8]
add esp, 0xc
mov edx, dword [ebp - 0x2dc]
add eax, edx
mov esi, dword [ebp - 0x2bc]
mov dword [ebp - 0x308], eax
cmp edx, eax
ja 0x100dfe3e
mov eax, edx
xor eax, dword [ebp - 0x310]
lea ecx, [eax - 1]
not eax
shr eax, 0x1f
shr ecx, 0x1f
and cl, al
mov eax, edx
xor eax, dword [ebp - 0x318]
neg cl
mov dword [ebp - 0x2d8], ecx
xor ecx, ecx
mov dword [ebp - 0x2c0], ecx
lea edx, [eax - 1]
not eax
shr edx, 0x1f
shr eax, 0x1f
and dl, al
neg dl
mov dword [ebp - 0x2cc], edx
test ebx, ebx
je 0x100dfdcc
mov eax, dword [ebp - 0x2e8]
not dl
lea esi, [eax + 1]
shr eax, 0x1f
mov dword [ebp - 0x320], eax
mov eax, dword [ebp - 0x2d8]
or dl, al
movzx ecx, al
mov eax, ebx
sub eax, dword [ebp - 0x2b8]
shr esi, 0x1f
mov dword [ebp - 0x31c], eax
mov eax, dword [ebp - 0x2b8]
mov dword [ebp - 0x2fc], esi
sub eax, ebx
mov esi, dword [ebp - 0x2e8]
mov dword [ebp - 0x304], ecx
neg esi
lea ecx, [ebp - 0x14]
mov byte [ebp - 0x2c5], dl
add eax, ecx
mov ecx, dword [ebp - 0x2c0]
mov dword [ebp - 0x2c4], eax
mov edi, edi
mov edx, dword [ebp - 0x2ec]
mov byte [ebp - 0x2ad], 0
cmp edi, edx
jae 0x100dfcf9
mov eax, dword [ebp - 0x2e0]
jmp 0x100dfd0a
mov eax, dword [ebp + 0x20]
add eax, edx
cmp edi, eax
jae 0x100dfd13
mov eax, dword [ebp - 0x2d4]
sub eax, edx
mov al, byte [eax + edi]
mov byte [ebp - 0x2ad], al
mov eax, dword [ebp - 0x320]
mov ebx, ecx
shr ebx, 0x1f
mov ecx, esi
shr ecx, 0x1f
inc edi
xor cl, al
xor al, bl
or cl, al
lea eax, [esi - 1]
xor cl, bl
shr eax, 0x1f
dec cl
movzx edx, cl
mov ecx, dword [ebp - 0x2fc]
xor al, cl
and edx, dword [ebp - 0x304]
xor cl, bl
or al, cl
mov cl, dl
xor al, bl
not cl
and cl, byte [ebp - 0x2ad]
dec al
and al, byte [ebp - 0x2d8]
and dl, 0x80
or cl, dl
not al
and al, cl
mov ecx, dword [ebp - 0x2c0]
and al, byte [ebp - 0x2c5]
cmp ecx, dword [ebp - 0x31c]
jb 0x100dfd9b
mov ecx, dword [ebp - 0x2cc]
movzx ecx, cl
mov dl, cl
not dl
and dl, al
mov eax, dword [ebp - 0x2c4]
mov al, byte [eax]
and al, cl
mov ecx, dword [ebp - 0x2c0]
or al, dl
inc dword [ebp - 0x2c4]
lea edx, [ebp - 0x1d4]
add edx, dword [ebp - 0x2e8]
inc ecx
mov ebx, dword [ebp - 0x2e4]
mov dword [ebp - 0x2c0], ecx
mov byte [edx + esi], al
inc esi
cmp ecx, ebx
jb 0x100dfce0
mov esi, dword [ebp - 0x2bc]
lea eax, [ebp - 0x1d4]
push eax
lea eax, [ebp - 0x2ac]
push eax
call dword [ebp - 0x2b4]
lea eax, [ebp - 0x1d4]
push eax
lea eax, [ebp - 0x2ac]
push eax
call dword [ebp - 0x2d0]
add esp, 0x10
xor ecx, ecx
test esi, esi
je 0x100dfe25
mov edx, dword [ebp - 0x2cc]
jmp 0x100dfe10
mov al, byte [ebp + ecx - 0x1d4]
and al, dl
or byte [ebp + ecx - 0xd4], al
inc ecx
cmp ecx, esi
jb 0x100dfe10
mov edx, dword [ebp - 0x2dc]
inc edx
mov dword [ebp - 0x2dc], edx
cmp edx, dword [ebp - 0x308]
jbe 0x100dfc31
lea eax, [ebp - 0x338]
push eax
call fcn.1006b130
mov eax, dword [ebp - 0x2f4]
push 0
push dword [eax]
lea eax, [ebp - 0x338]
push eax
call fcn.1006ace0
add esp, 0x10
cmp byte [ebp + 0x2c], 0
je 0x100dfec0
mov edi, dword [ebp - 0x2f0]
lea eax, [ebp - 0x94]
push edi
push 0x5c
push eax
call fcn.1003e9c0
push dword [ebp + 0x28]
lea eax, [ebp - 0x338]
push dword [ebp - 0x2f8]
push eax
call fcn.1006ae90
push edi
lea eax, [ebp - 0x94]
push eax
lea eax, [ebp - 0x338]
push eax
call fcn.1006ae90
push esi
lea eax, [ebp - 0xd4]
push eax
lea eax, [ebp - 0x338]
push eax
call fcn.1006ae90
add esp, 0x30
jmp 0x100dff08
xor eax, eax
test ebx, ebx
je 0x100dfedd
jmp 0x100dfed0
xor byte [ebp + eax - 0x94], 0x6a
inc eax
cmp eax, ebx
jb 0x100dfed0
push ebx
lea eax, [ebp - 0x94]
push eax
lea eax, [ebp - 0x338]
push eax
call fcn.1006ae90
push esi
lea eax, [ebp - 0xd4]
push eax
lea eax, [ebp - 0x338]
push eax
call fcn.1006ae90
add esp, 0x18
lea eax, [ebp - 0x30c]
push eax
push dword [ebp - 0x300]
lea eax, [ebp - 0x338]
push eax
call fcn.1006ac00
mov ecx, dword [ebp - 0x314]
add esp, 0xc
test ecx, ecx
je 0x100dff36
mov eax, dword [ebp - 0x30c]
mov dword [ecx], eax
lea eax, [ebp - 0x338]
push eax
call fcn.1006aea0
add esp, 4
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1003890f
mov esp, ebp
pop ebp
ret