Function at 0xd1d990
Capabilities:
Authenticate hmac
Resolve function by parsing pe exports

Disassembly:
push ebp
xor edx, edx
mov ebp, esp
xor ecx, ecx
push edi
push esi
push ebx
sub esp, 0x22c
jmp 0xd1d9c8
lea ebx, [edx + eax*2]
xor eax, edx
mov dword [ebp - 0x1ec], ebx
jle 0xd1d9b7
xor ebx, edx
js 0xd1e477
add ecx, 1
cmp ecx, 0xa0
je 0xd1d9f8
mov edx, dword [ebp - 0x1ec]
mov ebx, dword [ebp + 0xc]
movsx eax, word [ebx + ecx*2 - 0x50]
imul eax, eax
cmp eax, 0x40000000
jne 0xd1d9a2
mov edx, dword [ebp + 0x10]
add ecx, 1
cmp ecx, 0xa0
mov dword [ebp - 0x1ec], 0x7fffffff
mov dword [edx], 1
jne 0xd1d9c2
mov eax, dword [ebp - 0x1ec]
mov edx, dword [ebp - 0x1ec]
sub eax, 0x53c00
test edx, edx
js 0xd1eac6
test eax, eax
js 0xd1eb50
mov edx, dword [ebp - 0x1ec]
mov ecx, dword [ebp - 0x1ec]
sub edx, 0x3a98
xor ecx, 0x3a98
mov dword [ebp - 0x17c], edx
mov dword [ebp - 0x1e8], ecx
js 0xd1eb26
mov eax, dword [ebp - 0x17c]
test eax, eax
js 0xd1eb18
mov ebx, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x19c], 0
movsx eax, word [ebx + 0x4a]
movsx edi, word [ebx + 0x48]
add edx, 0x48
add ecx, 0x4a
mov dword [ebp - 0x1e4], edx
mov dword [ebp - 0x1dc], ecx
mov dword [ebp - 0x1f0], eax
imul eax, edi, 0x55c3
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x19c]
mov ebx, dword [ebp + 0xc]
sar eax, 0xf
mov dword [esp + 8], edx
mov dword [esp + 4], eax
movzx eax, word [ebx + ecx*8]
sar ax, 2
cwde
mov dword [esp], eax
call fcn.00d1ad60
mov dword [esp], edi
cwde
imul esi, eax, 0x55c3
mov dword [ebp - 0x180], eax
mov eax, dword [ebp + 0x10]
sar esi, 0xf
mov dword [esp + 4], esi
mov dword [esp + 8], eax
call fcn.00d17ff0
mov ecx, dword [ebp - 0x19c]
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], edx
mov word [ebp - 0x186], ax
imul eax, dword [ebp - 0x1f0], 0x18f6
sar eax, 0xf
mov dword [esp + 4], eax
movzx eax, word [ebx + ecx*8 + 2]
sar ax, 2
cwde
mov dword [esp], eax
call fcn.00d1ad60
mov edx, dword [ebp - 0x1f0]
mov dword [esp], edx
cwde
imul ebx, eax, 0x18f6
mov dword [ebp - 0x184], eax
mov eax, dword [ebp + 0x10]
sar ebx, 0xf
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
call fcn.00d17ff0
movsx ecx, word [ebp - 0x186]
mov dword [ebp - 0x190], ecx
mov dword [esp], ecx
movsx edi, ax
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.00d17ff0
mov edx, dword [ebp - 0x19c]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov word [ebp + edx*8 - 0x16a], ax
mov eax, dword [ebp - 0x190]
mov dword [esp], eax
call fcn.00d1ad60
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x19c]
mov dword [esp + 4], esi
mov dword [esp + 8], ecx
mov ecx, dword [ebp + 0xc]
mov word [ebp + edx*8 - 0x168], ax
movzx eax, word [ecx + edx*8 + 4]
sar ax, 2
cwde
mov dword [esp], eax
call fcn.00d1ad60
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x180]
mov dword [esp + 8], edx
mov dword [esp], ecx
movsx edi, ax
mov word [ebp - 0x1de], ax
imul eax, edi, 0x55c3
sar eax, 0xf
mov dword [esp + 4], eax
call fcn.00d17ff0
mov edx, dword [ebp - 0x19c]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ebx
mov esi, eax
mov eax, dword [ebp + 0x10]
movsx esi, si
mov dword [esp + 8], eax
movzx eax, word [ecx + edx*8 + 6]
sar ax, 2
cwde
mov dword [esp], eax
call fcn.00d1ad60
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x184]
mov dword [esp + 8], edx
mov dword [esp], ecx
movsx ebx, ax
mov word [ebp - 0x1e0], ax
imul eax, ebx, 0x18f6
mov dword [ebp - 0x1f0], ebx
sar eax, 0xf
mov dword [esp + 4], eax
call fcn.00d17ff0
mov dword [esp], esi
movsx ebx, ax
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
call fcn.00d17ff0
mov edx, dword [ebp - 0x19c]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [esp + 8], ecx
mov word [ebp + edx*8 - 0x166], ax
call fcn.00d1ad60
mov ebx, dword [ebp - 0x19c]
mov word [ebp + ebx*8 - 0x164], ax
add ebx, 1
cmp ebx, 0x28
mov dword [ebp - 0x19c], ebx
jne 0xd1da84
movzx edx, word [ebp - 0x1de]
mov eax, dword [ebp - 0x1e4]
movzx ebx, word [ebp - 0x1e0]
mov ecx, dword [ebp - 0x1dc]
mov word [eax], dx
mov edx, dword [ebp + 8]
lea eax, [ebp - 0x16a]
mov dword [ebp - 0x18c], eax
mov esi, eax
mov word [ecx], bx
lea ecx, [ebp - 0x2a]
mov dword [ebp - 0x20c], ecx
lea edi, [edx + 0x4c]
lea ebx, [edx + 0x50]
lea esi, [esi]
mov eax, dword [ebp + 0x10]
lea edx, [esi + 4]
mov ecx, edi
mov dword [esp], eax
mov eax, esi
call fcn.00d1d790
mov ecx, dword [ebp + 0x10]
lea edx, [esi + 6]
lea eax, [esi + 2]
add esi, 8
mov dword [esp], ecx
mov ecx, ebx
call fcn.00d1d790
cmp esi, dword [ebp - 0x20c]
jne 0xd1dcd0
mov eax, dword [ebp + 8]
lea ebx, [ebp - 0x16a]
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
add eax, 0x54
add edx, 0x56
mov dword [ebp - 0x1f4], eax
lea edi, [ecx + 0x5c]
mov dword [ebp - 0x1f8], edx
mov eax, dword [ebp + 0x10]
lea edx, [ebx + 8]
mov ecx, dword [ebp - 0x1f4]
mov dword [esp], eax
mov eax, ebx
call fcn.00d1d6a0
mov ecx, dword [ebp + 0x10]
lea edx, [ebx + 0xc]
lea eax, [ebx + 4]
mov dword [esp], ecx
mov ecx, dword [ebp - 0x1f8]
call fcn.00d1d6a0
mov ecx, dword [ebp + 0x10]
lea edx, [ebx + 0xe]
lea eax, [ebx + 6]
add ebx, 0x10
mov dword [esp], ecx
mov ecx, edi
call fcn.00d1d6a0
cmp esi, ebx
jne 0xd1dd24
mov ebx, dword [ebp + 8]
lea edi, [ebx + 0x58]
add ebx, 0x5a
mov eax, dword [ebp + 0x10]
mov ecx, edi
mov edx, dword [ebp - 0x18c]
mov dword [esp], eax
mov eax, dword [ebp - 0x18c]
add edx, 0x10
call fcn.00d1d6a0
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x18c]
mov eax, dword [ebp - 0x18c]
mov dword [esp], ecx
mov ecx, ebx
add edx, 0x18
add eax, 8
call fcn.00d1d6a0
add dword [ebp - 0x18c], 0x20
cmp esi, dword [ebp - 0x18c]
jne 0xd1dd74
mov edx, dword [ebp + 8]
mov ecx, 0x20
mov ebx, dword [ebp + 0x10]
lea eax, [ebp - 0x16a]
mov dword [esp + 0xc], 0xf
mov dword [esp + 8], 1
add edx, 0x46
mov dword [esp + 0x10], ebx
mov dword [esp + 4], 4
mov dword [esp], 0x28
call fcn.00d1d2e0
mov edx, dword [ebp + 8]
mov ecx, 0x10
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 7
add edx, 0x44
mov dword [esp + 4], 8
mov word [ebp - 0x1a], ax
lea eax, [ebp - 0x16a]
mov dword [esp], 0x14
call fcn.00d1d2e0
mov edx, dword [ebp + 8]
mov ecx, 0x10
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 3
add edx, 0x42
mov dword [esp + 4], 8
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x16a]
mov dword [esp], 0x14
call fcn.00d1d2e0
mov edx, dword [ebp + 8]
mov ecx, 0x10
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 2
add edx, 0x40
mov dword [esp + 4], 8
mov word [ebp - 0x1e], ax
lea eax, [ebp - 0x16a]
mov dword [esp], 0x14
call fcn.00d1d2e0
mov edx, dword [ebp + 8]
mov ecx, 0x10
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 6
add edx, 0x3e
mov dword [esp + 4], 8
mov word [ebp - 0x20], ax
lea eax, [ebp - 0x16a]
mov dword [esp], 0x14
call fcn.00d1d2e0
mov edx, dword [ebp + 8]
mov ecx, 8
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 4
add edx, 0x3c
mov dword [esp + 4], 0x10
mov word [ebp - 0x22], ax
lea eax, [ebp - 0x16a]
mov dword [esp], 0xa
call fcn.00d1d2e0
mov edx, dword [ebp + 8]
mov ecx, 8
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 0xc
add edx, 0x3a
mov dword [esp + 4], 0x10
mov word [ebp - 0x24], ax
lea eax, [ebp - 0x16a]
mov dword [esp], 0xa
call fcn.00d1d2e0
mov edx, dword [ebp + 8]
mov ecx, 8
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 8
add edx, 0x38
mov dword [esp + 4], 0x10
mov word [ebp - 0x26], ax
lea eax, [ebp - 0x16a]
mov dword [esp], 0xa
call fcn.00d1d2e0
mov edx, dword [ebp + 8]
mov ecx, 8
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 0
add edx, 0x36
mov dword [esp + 4], 0x10
mov word [ebp - 0x28], ax
lea eax, [ebp - 0x16a]
mov dword [esp], 0xa
call fcn.00d1d2e0
mov dword [ebp - 0x194], 0
mov dword [ebp - 0x1a0], 0
mov word [ebp - 0x2a], ax
jmp 0xd1e035
lea edx, [eax + eax]
add edx, dword [ebp - 0x194]
xor eax, dword [ebp - 0x194]
jle 0xd1e01b
mov ebx, dword [ebp - 0x194]
xor ebx, edx
js 0xd1e4c5
add dword [ebp - 0x1a0], 1
cmp dword [ebp - 0x1a0], 9
je 0xd1e127
mov dword [ebp - 0x194], edx
mov edx, dword [ebp - 0x1a0]
mov ecx, dword [ebp + 8]
movsx eax, word [ecx + edx*2]
mov dword [esp], eax
call fcn.00d1ada0
mov ebx, dword [ebp - 0x1a0]
mov ecx, dword [ebp + 8]
movzx edx, word [ecx + ebx*2]
test ax, ax
movsx edi, ax
movsx ebx, dx
js 0xd1e4b1
mov ecx, edi
mov eax, ebx
shl eax, cl
movsx esi, ax
mov eax, esi
sar eax, cl
cmp ebx, eax
je 0xd1e083
sar dx, 0xf
xor dx, 0x7fff
movsx esi, dx
mov edx, dword [ebp - 0x1a0]
mov ebx, dword [ebp + 0x10]
mov dword [esp + 4], 1
movsx eax, word [ebp + edx*2 - 0x2a]
mov dword [esp + 8], ebx
mov dword [esp], eax
call fcn.00d1ae20
mov dword [esp + 4], esi
cwde
mov dword [esp], eax
call fcn.00d194b0
mov ecx, dword [ebp + 0x10]
mov dword [esp + 4], 5
mov dword [esp], edi
mov dword [esp + 8], ecx
mov ebx, eax
call fcn.00d1ad60
movsx esi, bx
test ax, ax
js 0xd1e496
movsx ecx, ax
mov eax, esi
shl eax, cl
movsx edx, ax
mov eax, edx
sar eax, cl
cmp esi, eax
je 0xd1e0f5
sar bx, 0xf
xor bx, 0x7fff
movsx edx, bx
mov eax, edx
imul eax, edx
cmp eax, 0x40000000
jne 0xd1dffc
mov edx, dword [ebp + 0x10]
add dword [ebp - 0x1a0], 1
cmp dword [ebp - 0x1a0], 9
mov dword [edx], 1
mov edx, 0x7fffffff
jne 0xd1e02f
mov ecx, edx
shl ecx, 6
mov eax, ecx
sar eax, 6
cmp edx, eax
je 0xd1e140
mov ecx, edx
sar ecx, 0x1f
xor ecx, 0x7fffffff
sar ecx, 0x10
imul eax, ecx, 0xe39
sar eax, 0xf
cmp eax, 0x7fff
mov esi, eax
jle 0xd1e163
mov ecx, dword [ebp + 0x10]
mov esi, 0x7fff
mov dword [ecx], 1
mov ebx, dword [ebp + 8]
movsx edx, word [ebx]
movsx eax, word [ebx + 2]
lea ebx, [edx + eax]
xor eax, edx
js 0xd1e17e
mov eax, edx
xor eax, ebx
js 0xd1eba2
mov ecx, dword [ebp + 8]
movsx eax, word [ecx + 4]
lea ecx, [ebx + eax]
xor eax, ebx
js 0xd1e196
mov eax, ecx
xor eax, ebx
js 0xd1eb87
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 6]
lea edx, [ecx + eax]
xor eax, ecx
js 0xd1e1ae
mov eax, edx
xor eax, ecx
js 0xd1ebf3
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 8]
lea ecx, [edx + eax]
xor eax, edx
js 0xd1e1c6
mov eax, ecx
xor eax, edx
js 0xd1ec0e
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0xa]
lea edx, [ecx + eax]
xor eax, ecx
js 0xd1e1de
mov eax, edx
xor eax, ecx
js 0xd1ec29
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0xc]
lea ecx, [edx + eax]
xor eax, edx
js 0xd1e1f6
mov eax, ecx
xor eax, edx
js 0xd1ec44
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0xe]
lea edx, [ecx + eax]
xor eax, ecx
js 0xd1e20e
mov eax, edx
xor eax, ecx
js 0xd1ebbd
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0x10]
lea ecx, [eax + edx]
xor eax, edx
js 0xd1e226
mov eax, ecx
xor eax, edx
js 0xd1ebd8
mov edx, ecx
shl edx, 0xd
mov eax, edx
sar eax, 0xd
cmp ecx, eax
je 0xd1e23f
mov edx, ecx
sar edx, 0x1f
xor edx, 0x7fffffff
mov ecx, dword [ebp + 0x10]
shr edx, 0x10
movsx eax, dx
mov word [ebp - 0x1d8], dx
mov dword [esp + 4], 0
mov dword [esp + 8], ecx
mov dword [esp], eax
call fcn.00d1ad60
cwde
imul eax, eax, 0xfffff508
sar eax, 0xf
cmp eax, 0x7fff
movsx edx, ax
jle 0xd1e285
mov ebx, dword [ebp + 0x10]
mov edx, 0x7fff
mov dword [ebx], 1
mov eax, dword [ebp + 0x10]
mov dword [esp], edx
mov dword [esp + 4], 0x4ec
mov dword [esp + 8], eax
call fcn.00d17ff0
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
cmp ax, 0x2cf
mov ebx, eax
mov eax, 0x2d0
cmovle ebx, eax
movsx eax, word [edx + 0x64]
mov dword [esp + 8], ecx
mov dword [esp + 4], 1
mov dword [esp], eax
call fcn.00d1ae20
mov edx, dword [ebp + 8]
cmp bx, si
mov word [edx + 0x64], ax
jge 0xd1e2db
or ah, 0x40
mov word [edx + 0x64], ax
mov eax, dword [ebp - 0x1e8]
test eax, eax
js 0xd1eaf2
mov ecx, dword [ebp - 0x17c]
shr ecx, 0x1f
mov byte [ebp - 0x1b8], cl
mov ebx, dword [ebp + 8]
movzx esi, word [ebx + 0x76]
movzx eax, word [ebx + 0x7e]
cmp si, ax
jge 0xd1e62a
cmp ax, 0x4ccb
mov ebx, 0x1999
jle 0xd1e639
cwde
mov edx, eax
imul eax, ebx
shl edx, 0x10
cmp eax, 0x40000000
je 0xd1ea59
add eax, eax
mov ecx, edx
sub ecx, eax
xor eax, edx
js 0xd1ea73
movsx eax, si
imul eax, ebx
cmp eax, 0x40000000
je 0xd1ea46
lea edx, [ecx + eax*2]
xor eax, ecx
jle 0xd1e35f
mov ebx, edx
xor ebx, ecx
js 0xd1eb6c
mov ecx, dword [ebp + 0x10]
mov dword [esp], edx
mov dword [esp + 4], ecx
call fcn.00d17c80
mov edx, 0x3332
mov ebx, dword [ebp + 8]
cmp ax, 0x3331
cmovg edx, eax
cmp byte [ebp - 0x1b8], 0
mov word [ebx + 0x7e], dx
je 0xd1e89b
mov eax, dword [ebp + 0x10]
mov word [ebx + 0x7e], 0x3332
mov dword [esp + 4], 1
mov dword [esp + 8], eax
movsx eax, word [ebx + 0x6a]
mov dword [esp], eax
call fcn.00d1ae20
mov edx, dword [ebp + 0x10]
mov word [ebx + 0x6a], ax
mov dword [esp + 8], edx
mov dword [esp + 4], 1
movsx eax, word [ebx + 0x6c]
mov dword [esp], eax
call fcn.00d1ae20
mov word [ebx + 0x6c], ax
movzx eax, word [ebx + 0x7e]
cmp ax, 0x5998
jg 0xd1e90c
mov ebx, dword [ebp + 8]
mov word [ebx + 0x74], 0
mov edx, ebx
movsx eax, word [edx + 0x6a]
and eax, 0x7f80
cmp eax, 0x7f80
je 0xd1ed09
movsx eax, word [edx + 0x6c]
and eax, 0x7fff
cmp eax, 0x7fff
je 0xd1ed09
mov edx, dword [ebp + 8]
mov word [edx + 0x7a], 0
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0x66]
and eax, 0x6000
cmp eax, 0x6000
je 0xd1e643
movsx eax, word [ebx + 0x68]
and eax, 0x7c00
cmp eax, 0x7c00
je 0xd1e643
mov edx, dword [ebp + 8]
mov word [ebp - 0x1be], 0
mov dword [ebp - 0x1a4], 0
movsx eax, word [edx + 0x64]
test eax, 0x7f80
jne 0xd1e59f
mov word [edx + 0x62], 0x14
jmp 0xd1e64c
mov eax, dword [ebp + 0x10]
sar edx, 0x1f
not edx
sub edx, 0x80000000
mov dword [ebp - 0x1ec], edx
mov dword [eax], 1
jmp 0xd1d9b7
mov ecx, eax
xor edx, edx
neg ecx
xor eax, eax
cmp cx, 0xe
jg 0xd1dfff
mov edx, esi
sar edx, cl
jmp 0xd1e0f5
mov ecx, eax
xor esi, esi
neg ecx
sar ebx, cl
cmp cx, 0xf
cmovl esi, ebx
jmp 0xd1e083
mov edx, dword [ebp - 0x194]
mov eax, dword [ebp + 0x10]
sar edx, 0x1f
not edx
sub edx, 0x80000000
mov dword [eax], 1
jmp 0xd1e01b
mov ecx, edi
mov eax, esi
shl eax, cl
cwde
mov dword [ebp - 0x1bc], eax
sar eax, cl
cmp eax, esi
je 0xd1e509
sar bx, 0xf
xor bx, 0x7fff
movsx ebx, bx
mov dword [ebp - 0x1bc], ebx
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x198]
mov dword [esp + 4], 1
mov dword [esp + 8], ebx
mov dword [esp], eax
call fcn.00d1ae20
mov edx, dword [ebp - 0x1bc]
mov dword [esp + 4], edx
cwde
mov dword [esp], eax
call fcn.00d194b0
mov ecx, dword [ebp + 0x10]
mov dword [esp + 4], edi
mov dword [esp], 8
mov dword [esp + 8], ecx
mov ebx, eax
call fcn.00d1ad60
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], edx
cwde
mov dword [esp + 4], eax
movsx eax, bx
mov dword [esp], eax
call fcn.00d1ae20
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], ecx
cwde
mov dword [esp + 4], eax
movsx eax, word [ebp - 0x1be]
mov dword [esp], eax
call fcn.00d17ff0
add dword [ebp - 0x1a4], 1
cmp dword [ebp - 0x1a4], 9
mov word [ebp - 0x1be], ax
je 0xd1ea98
mov ecx, dword [ebp - 0x1a4]
mov eax, dword [ebp + 8]
movzx ebx, word [ebp + ecx*2 - 0x2a]
movzx edx, word [eax + ecx*2 + 0x12]
cmp bx, dx
jle 0xd1e5bd
mov eax, ebx
mov ebx, edx
mov edx, eax
mov dword [ebp - 0x198], 0xb8
cmp dx, 0xb7
movsx eax, dx
cmovle eax, dword [ebp - 0x198]
cmp bx, 0xb7
movsx esi, bx
mov dword [ebp - 0x198], eax
jg 0xd1e5f0
mov ebx, 0xb8
mov esi, 0xb8
mov dword [esp], esi
call fcn.00d1ada0
test ax, ax
movsx edi, ax
jns 0xd1e4e4
mov ecx, eax
neg ecx
sar esi, cl
cmp cx, 0xf
mov dword [ebp - 0x1bc], 0
cmovge esi, dword [ebp - 0x1bc]
mov dword [ebp - 0x1bc], esi
jmp 0xd1e509
cmp ax, 0x4ccb
mov ebx, 0x28f
jg 0xd1e31b
mov ebx, 0xa3d
jmp 0xd1e31b
mov eax, dword [ebp + 8]
mov word [eax + 0x62], 0x14
mov esi, 0x7fff
mov ecx, dword [ebp + 8]
xor ebx, ebx
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], edx
movsx eax, word [ecx + ebx*2 + 0x12]
mov dword [esp + 4], eax
movsx eax, word [ebp + ebx*2 - 0x2a]
mov dword [esp], eax
call fcn.00d1ad60
mov edx, dword [ebp + 0x10]
mov dword [esp], esi
mov dword [esp + 8], edx
cwde
mov dword [esp + 4], eax
call fcn.00d28f50
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 8]
mov dword [esp + 8], ecx
cwde
mov dword [esp + 4], eax
movsx eax, word [edx + ebx*2 + 0x12]
mov dword [esp], eax
call fcn.00d17ff0
mov ecx, dword [ebp + 8]
mov word [ecx + ebx*2 + 0x12], ax
add ebx, 1
cmp ebx, 9
jne 0xd1e656
movsx eax, word [ecx + 0x64]
test ah, 0x78
jne 0xd1e6c9
movsx eax, word [ecx + 0x66]
test ah, 0x78
je 0xd1e9ae
mov ebx, dword [ebp + 8]
cmp word [ebx + 0x62], 0
je 0xd1e98b
xor eax, eax
xor edx, edx
mov word [ebp - 0x1c0], 0x666
mov ebx, dword [ebp + 8]
cwde
xor esi, esi
movsx edi, dx
mov dword [ebp - 0x1fc], eax
add ebx, 0x24
jmp 0xd1e75e
cwde
mov ecx, dword [ebp + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x1fc]
mov dword [esp + 8], ecx
mov dword [esp], eax
call fcn.00d28f50
mov edx, dword [ebp + 0x10]
mov dword [esp + 8], edx
cwde
mov dword [esp + 4], eax
movsx eax, word [ebx - 0x24]
mov dword [esp], eax
call fcn.00d17ff0
mov ecx, dword [ebp + 0x10]
mov dword [esp], edi
mov dword [esp + 8], ecx
cwde
mov dword [esp + 4], eax
call fcn.00d17ff0
mov edx, 0x3e80
cmp ax, 0x3e81
cmovl edx, eax
mov word [ebx - 0x24], dx
add esi, 1
add ebx, 2
cmp si, 9
je 0xd1e7f0
mov eax, dword [ebp + 0x10]
mov dword [esp + 8], eax
movsx eax, word [ebx - 0x24]
mov dword [esp + 4], eax
movsx eax, word [ebx]
mov dword [esp], eax
call fcn.00d1ad60
test ax, ax
jns 0xd1e6f8
cwde
mov edx, dword [ebp + 0x10]
mov dword [esp + 4], eax
movsx eax, word [ebp - 0x1c0]
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.00d28f50
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], ecx
cwde
mov dword [esp + 4], eax
movsx eax, word [ebx - 0x24]
mov dword [esp], eax
call fcn.00d17ff0
mov edx, dword [ebp + 0x10]
mov dword [esp], 0xfffffffe
mov dword [esp + 8], edx
cwde
mov dword [esp + 4], eax
call fcn.00d17ff0
cmp ax, 0x27
mov word [ebx - 0x24], ax
jg 0xd1e74e
add esi, 1
mov word [ebx - 0x24], 0x28
add ebx, 2
cmp si, 9
jne 0xd1e75e
movzx eax, word [ebp - 0x2a]
mov ebx, dword [ebp + 8]
mov word [ebx + 0x24], ax
movzx eax, word [ebp - 0x28]
mov word [ebx + 0x26], ax
movzx eax, word [ebp - 0x26]
mov word [ebx + 0x28], ax
movzx eax, word [ebp - 0x24]
mov word [ebx + 0x2a], ax
movzx eax, word [ebp - 0x22]
mov word [ebx + 0x2c], ax
movzx eax, word [ebp - 0x20]
mov word [ebx + 0x2e], ax
movzx eax, word [ebp - 0x1e]
mov word [ebx + 0x30], ax
movzx eax, word [ebp - 0x1c]
mov word [ebx + 0x32], ax
movzx eax, word [ebp - 0x1a]
mov word [ebx + 0x34], ax
xor ebx, ebx
cmp word [ebp - 0x1d8], 0x65
setge bl
cmp word [ebp - 0x1d8], 0x65
lea ebx, [ebx + ebx*2 + 4]
setl al
movzx esi, al
add esi, 4
cmp byte [ebp - 0x1b8], 0
je 0xd1e938
mov eax, dword [ebp + 8]
xor edx, edx
mov word [eax + 0x5e], 0
mov word [eax + 0x60], 0
mov word [eax + 0x72], 0
mov word [eax + 0x74], 0
xor eax, eax
mov ecx, dword [ebp + 8]
mov word [ecx + 0x78], dx
add esp, 0x22c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebp + 0x10]
mov dword [esp + 4], 1
mov dword [esp + 8], edx
movsx eax, word [ebx + 0x6a]
mov dword [esp], eax
call fcn.00d1ae20
mov ebx, dword [ebp + 8]
mov word [ebx + 0x6a], ax
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
movsx eax, word [ebx + 0x6c]
mov dword [esp], eax
call fcn.00d1ae20
mov word [ebx + 0x6c], ax
movzx eax, word [ebx + 0x7e]
cmp ax, 0x4ccc
jle 0xd1e8ef
mov ecx, dword [ebp + 8]
or word [ecx + 0x6a], 0x4000
cmp ax, 0x3fff
jle 0xd1e3e0
mov ebx, dword [ebp + 8]
or word [ebx + 0x6c], 0x4000
cmp ax, 0x5998
jle 0xd1e3e0
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 8]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
movsx eax, word [edx + 0x74]
mov dword [esp], eax
call fcn.00d17ff0
mov ecx, dword [ebp + 8]
mov edx, ecx
mov word [ecx + 0x74], ax
jmp 0xd1e3eb
mov edx, dword [ebp + 8]
cmp word [edx + 0x74], 0x64
jle 0xd1e9d1
cmp word [edx + 0x72], 0xf9
jg 0xd1e954
mov word [edx + 0x72], 0xfa
mov ebx, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
mov word [ebx + 0x5e], 4
mov dword [esp + 8], eax
mov dword [esp + 4], 1
movsx eax, word [ebx + 0x72]
mov dword [esp], eax
call fcn.00d1ad60
mov edx, 1
mov word [ebx + 0x72], ax
mov eax, 1
jmp 0xd1e889
cmp word [ebx + 0x72], 0
jne 0xd1e6d7
mov eax, 0x1eb
mov edx, 2
mov word [ebp - 0x1c0], 0x74b
jmp 0xd1e6e4
cmp word [ecx + 0x72], 0
jne 0xd1e6c9
mov eax, 0x666
mov edx, 2
mov word [ebp - 0x1c0], 0x831
jmp 0xd1e6e4
cmp word [edx + 0x72], 0
jne 0xd1e954
movsx eax, word [edx + 0x64]
test eax, 0x3ff0
jne 0xd1e9f6
cmp word [edx + 0x7e], 0x5332
lea esi, [esi]
jg 0xd1ecca
test ah, 0x40
jne 0xd1eca0
mov ebx, dword [ebp + 8]
xor edx, edx
xor eax, eax
movzx ecx, word [ebx + 0x60]
mov word [ebx + 0x5e], 0
test cx, cx
jle 0xd1e889
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
movsx eax, cx
mov dword [esp], eax
call fcn.00d1ad60
mov edx, 1
mov word [ebx + 0x60], ax
mov eax, 1
jmp 0xd1e889
mov edx, dword [ebp + 0x10]
mov dword [edx], 1
mov edx, 0x7fffffff
jmp 0xd1e35f
mov eax, dword [ebp + 0x10]
mov ecx, edx
mov dword [eax], 1
mov eax, 0x7fffffff
sub ecx, eax
xor eax, edx
jns 0xd1e33d
mov eax, ecx
xor eax, edx
jns 0xd1e33d
mov ecx, edx
mov edx, dword [ebp + 0x10]
sar ecx, 0x1f
not ecx
sub ecx, 0x80000000
mov dword [edx], 1
jmp 0xd1e33d
cmp ax, 0x3e8
jg 0xd1eb5e
mov eax, dword [ebp + 8]
test byte [eax + 0x65], 0x40
je 0xd1ec7e
movzx eax, word [eax + 0x62]
test ax, ax
jne 0xd1ec5f
mov esi, 0xccc
jmp 0xd1e651
mov ecx, dword [ebp - 0x1ec]
xor ecx, eax
jns 0xd1da11
mov eax, dword [ebp - 0x1ec]
mov ebx, dword [ebp + 0x10]
sar eax, 0x1f
not eax
sub eax, 0x80000000
mov dword [ebx], 1
jmp 0xd1da11
mov ebx, dword [ebp - 0x17c]
xor ebx, dword [ebp - 0x1ec]
js 0xd1ecd9
mov eax, dword [ebp - 0x17c]
shr eax, 0x1f
mov byte [ebp - 0x1b8], al
jmp 0xd1e2f8
mov eax, dword [ebp + 8]
and word [eax + 0x6c], 0x3fff
jmp 0xd1da51
xor edx, dword [ebp - 0x1ec]
jns 0xd1da43
mov eax, dword [ebp - 0x1ec]
mov ebx, dword [ebp + 0x10]
sar eax, 0x1f
not eax
sub eax, 0x80000000
mov dword [ebx], 1
jmp 0xd1da49
mov eax, dword [ebp + 8]
and word [eax + 0x66], 0x3fff
jmp 0xd1da19
mov ebx, dword [ebp + 8]
mov word [ebx + 0x62], 0x14
jmp 0xd1e64c
mov edx, ecx
mov eax, dword [ebp + 0x10]
sar edx, 0x1f
not edx
sub edx, 0x80000000
mov dword [eax], 1
jmp 0xd1e35f
mov ecx, ebx
mov edx, dword [ebp + 0x10]
sar ecx, 0x1f
not ecx
sub ecx, 0x80000000
mov dword [edx], 1
jmp 0xd1e196
mov ebx, edx
mov edx, dword [ebp + 0x10]
sar ebx, 0x1f
not ebx
sub ebx, 0x80000000
mov dword [edx], 1
jmp 0xd1e17e
mov edx, ecx
mov ecx, dword [ebp + 0x10]
sar edx, 0x1f
not edx
sub edx, 0x80000000
mov dword [ecx], 1
jmp 0xd1e20e
mov ecx, edx
mov edx, dword [ebp + 0x10]
sar ecx, 0x1f
not ecx
sub ecx, 0x80000000
mov dword [edx], 1
jmp 0xd1e226
mov edx, ecx
mov ecx, dword [ebp + 0x10]
sar edx, 0x1f
not edx
sub edx, 0x80000000
mov dword [ecx], 1
jmp 0xd1e1ae
mov ecx, edx
mov edx, dword [ebp + 0x10]
sar ecx, 0x1f
not ecx
sub ecx, 0x80000000
mov dword [edx], 1
jmp 0xd1e1c6
mov edx, ecx
mov ecx, dword [ebp + 0x10]
sar edx, 0x1f
not edx
sub edx, 0x80000000
mov dword [ecx], 1
jmp 0xd1e1de
mov ecx, edx
mov edx, dword [ebp + 0x10]
sar ecx, 0x1f
not ecx
sub ecx, 0x80000000
mov dword [edx], 1
jmp 0xd1e1f6
mov ecx, dword [ebp + 0x10]
cwde
mov dword [esp + 4], 1
mov dword [esp], eax
mov dword [esp + 8], ecx
call fcn.00d1ad60
mov ebx, dword [ebp + 8]
mov word [ebx + 0x62], ax
mov eax, dword [ebp + 8]
cmp word [eax + 0x62], 0x14
je 0xd1e64c
test byte [eax + 0x65], 0x40
mov esi, 0x3fff
je 0xd1e651
jmp 0xd1eabc
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
movsx eax, word [ecx + 0x5e]
mov dword [esp + 8], edx
mov dword [esp + 4], 1
mov dword [esp], eax
call fcn.00d17ff0
mov ecx, dword [ebp + 8]
cmp si, ax
mov word [ecx + 0x5e], ax
jle 0xd1ecf6
mov edx, 1
mov eax, 1
jmp 0xd1e889
mov edx, dword [ebp - 0x1ec]
mov ecx, dword [ebp + 0x10]
shr edx, 0x1f
mov byte [ebp - 0x1b8], dl
mov dword [ecx], 1
jmp 0xd1e2f8
mov edx, 1
mov eax, 1
mov word [ecx + 0x60], bx
jmp 0xd1e889
mov ecx, dword [ebp + 8]
cmp word [ecx + 0x62], 4
mov word [ecx + 0x7a], 1
jg 0xd1e41c
mov word [ecx + 0x62], 5
jmp 0xd1e41c