Function at 0x300081e0
Capabilities:
Check for hardware breakpoints

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2e4
mov eax, dword [0x30215e88]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
cmp edx, 3
ja 0x30008410
mov eax, dword [0x3026ea64]
test eax, eax
je 0x30008216
cmp dword [eax], ecx
je 0x30008221
mov eax, dword [eax + 0x88]
test eax, eax
jne 0x30008208
push ecx
push str.ClearThreadBreakpoint:_No_thread_breakpoints_for_thread__d_n
jmp 0x30008416
shl edx, 5
cmp dword [eax + 4], 0
lea esi, [edx + eax]
jne 0x3000824d
push str.ClearThreadBreakpoint:_There_is_no_thread_handle_in_the_thread_breakpoint___Error._n
call fcn.3000a0d0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.30159c2d
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x18]
mov ecx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov dword [ebp - 0x2dc], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x2e0], ecx
cmp ebx, 3
jbe 0x30008278
push ebx
push str.ClearDebugRegister:__d_is_an_invalid_breakpoint_type__must_be_0_3._n
jmp 0x300083e8
cmp edi, 3
ja 0x300083e2
cmp eax, 8
ja 0x300083da
lea eax, [ebp - 0x2d8]
mov dword [ebp - 0x2d8], 0x10010
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetThreadContext]
test eax, eax
jne 0x300082d3
push str.ClearDebugRegister:_Initial_GetThreadContext_failed
call fcn.3000a0f0
add esp, 4
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.3000a0d0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.30159c2d
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x300082e9
and dword [ebp - 0x2c0], 0xfff0fffe
mov dword [ebp - 0x2d4], edi
jmp 0x30008338
cmp edi, 1
jne 0x30008304
and dword [ebp - 0x2c0], 0xff0ffffb
mov dword [ebp - 0x2d0], 0
jmp 0x30008338
cmp edi, 2
jne 0x3000831f
and dword [ebp - 0x2c0], 0xf0ffffef
mov dword [ebp - 0x2cc], 0
jmp 0x30008338
cmp edi, 3
jne 0x30008338
and dword [ebp - 0x2c0], 0xfffffbf
mov dword [ebp - 0x2c8], 0
cmp ebx, 3
jne 0x30008353
mov ecx, dword [ebp - 0x2dc]
call fcn.3004ff30
test eax, eax
je 0x30008353
mov ecx, edi
call fcn.3001dee0
lea eax, [ebp - 0x2d8]
mov dword [ebp - 0x2d8], 0x10010
push eax
push dword [ebp - 0x2e0]
call dword [sym.imp.KERNEL32.dll_SetThreadContext]
test eax, eax
jne 0x300083a1
push str.ClearDebugRegister:_SetThreadContext_failed
call fcn.3000a0f0
add esp, 4
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.3000a0d0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.30159c2d
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x10], 0
mov eax, 1
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.30159c2d
mov esp, ebp
pop ebp
ret
push eax
push str.ClearDebugRegister:__d_is_an_invalid_Size__must_be_1__2__4_or_8._n
jmp 0x300083e8
push edi
push str.ClearDebugRegister:__d_is_an_invalid_register__must_be_0_3._n
call fcn.3000a0d0
add esp, 8
push str.ClearThreadBreakpoint:_Call_to_ClearDebugRegister_failed._n
call fcn.3000a0d0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.30159c2d
mov esp, ebp
pop ebp
ret
push edx
push str.ClearThreadBreakpoint:_Error___register_value__d__can_only_have_value_0_3._n
call fcn.3000a0d0
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
xor eax, eax
pop edi
pop esi
pop ebx
call fcn.30159c2d
mov esp, ebp
pop ebp
ret