Function at 0x456ab0
Capabilities:
Check for software breakpoints

Disassembly:
push ebp
mov ebp, esp
lea esp, [esp - 0x58]
push ebx
push esi
push edi
mov dword [ebp - 0xc], eax
mov dword [ebp - 4], edx
mov dword [ebp - 8], ecx
mov eax, dword [ebp - 4]
mov edi, dword [ebp - 8]
inc edi
mov ecx, edi
shl edi, 1
cmp edi, 0x1000
jb 0x456ae5
sub esp, 0xffc
push edi
sub edi, 0x1000
jmp 0x456ace
sub esp, edi
and esp, 0xfffffff4
mov edi, esp
mov esi, eax
rep movsw word es:[edi], word [esi]
mov dword [ebp - 4], esp
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x20], 0
mov eax, 1
lea edx, [ebp - 0x48]
lea ecx, [ebp - 0x30]
call fcn.0040bf40
call fcn.0040da40
push eax
test eax, eax
jne 0x456fc3
mov eax, ebp
call fcn.00456ff0
test al, al
jne 0x456b54
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc]
mov byte [eax + 0xbc], 0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc]
add eax, 0x1c
mov edx, str.close
call fcn.004076a0
mov byte [ebp - 0x10], 1
jmp 0x456fc3
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc]
call fcn.00455f70
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x14]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
shr ecx, 0x1f
add edx, ecx
mov dword [ebp - 0x18], edx
mov byte [ebp - 0x24], 0
cmp dword [ebp - 0x18], 3
jne 0x456d5d
cmp dword [ebp - 0x14], 0x130
je 0x456d5d
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc]
cmp dword [eax + 0x98], 0
jne 0x456bb1
mov eax, ebp
call fcn.00457180
mov byte [ebp - 0x10], 1
jmp 0x456fc3
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
add eax, 0x130
mov edx, dword [eax]
add edx, 1
jno 0x456bc8
call fcn.0040d210
mov dword [eax], edx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x98]
lea eax, [ebp - 0x1c]
call fcn.004076a0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov edx, dword [eax + 0xd8]
lea eax, [ebp - 0x20]
call fcn.004076a0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
push dword [eax + 0x130]
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 4]
mov dword [ebp - 0x50], edx
lea ebx, [ebp - 0x20]
lea esi, [ebp - 0x1c]
mov eax, dword [ebp - 0xc]
mov edi, dword [eax + 4]
test edi, edi
jne 0x456c21
mov eax, 0xd2
call fcn.0040d6c0
mov edi, dword [edi]
mov eax, edi
call fcn.00402bd0
mov edx, esi
mov ecx, ebx
mov eax, dword [ebp - 0x50]
call dword [edi + 0x15c]
test al, al
jne 0x456c4b
mov eax, ebp
call fcn.00457180
mov byte [ebp - 0x10], 1
jmp 0x456fc3
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
cmp byte [eax + 0x138], 0
je 0x456d07
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [edx + 0x130]
cmp eax, dword [ecx + 0x134]
jge 0x456d07
mov byte [ebp - 0x10], 0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
add eax, 0xd4
mov edx, dword [ebp - 0x1c]
call fcn.004076a0
cmp dword [ebp - 0x14], 0x12e
jne 0x456cad
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
test word [eax + 0x13a], 0x40
jne 0x456cb6
cmp dword [ebp - 0x14], 0x12f
jne 0x456cdd
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov dword [eax + 0xdc], 0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
add eax, 0xd8
mov edx, 0x4c2634
call fcn.004076a0
jmp 0x456cf0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
add eax, 0xd8
mov edx, dword [ebp - 0x20]
call fcn.004076a0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
add eax, 0xcc
mov edx, 0
call fcn.004076a0
jmp 0x456d1e
mov byte [ebp - 0x10], 1
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc]
add eax, 0x98
mov edx, dword [ebp - 0x1c]
call fcn.004076a0
mov eax, dword [ebp - 0xc]
mov esi, dword [eax + 4]
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax + 4]
test ebx, ebx
jne 0x456d38
mov eax, 0xd2
call fcn.0040d6c0
mov ebx, dword [ebx]
mov eax, ebx
call fcn.00402bd0
mov eax, esi
call dword [ebx + 0x10c]
test al, al
je 0x456fc3
mov eax, ebp
call fcn.00457050
jmp 0x456fc3
cmp dword [ebp - 0x18], 2
je 0x456f4f
mov eax, dword [ebp - 0x14]
cmp eax, 0x65
jl 0x456f3f
sub eax, 0x65
je 0x456d8d
sub eax, 0x12c
je 0x456da3
sub eax, 6
je 0x456e6e
jmp 0x456f3f
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0xc]
mov byte [eax + 0xbc], 1
mov byte [ebp - 0x10], 1
jmp 0x456fc3
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 4]
mov eax, dword [ecx + 0x108]
cmp eax, dword [edx + 0x11c]
jge 0x456e00
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax + 8]
mov eax, dword [ebp - 0xc]
mov esi, dword [eax + 4]
mov eax, dword [ebp - 0xc]
mov edi, dword [eax + 4]
test edi, edi
jne 0x456de6
mov eax, 0xd2
call fcn.0040d6c0
mov edi, dword [edi]
mov eax, edi
call fcn.00402bd0
mov eax, esi
mov edx, ebx
mov ecx, dword [ebp - 0x58]
call dword [edi + 0x154]
test al, al
jne 0x456e56
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
cmp dword [eax + 0xc8], 0
je 0x456e46
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov ebx, dword [eax + 0xc8]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov esi, dword [eax + 0xc8]
test esi, esi
jne 0x456e35
mov eax, 0xd2
call fcn.0040d6c0
mov esi, dword [esi]
mov eax, esi
call fcn.00402bd0
mov eax, ebx
call dword [esi + 0x8c]
mov eax, ebp
call fcn.00457180
mov byte [ebp - 0x10], 1
jmp 0x456fc3
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
test word [eax + 0x13a], 1
setne byte [ebp - 0x24]
jmp 0x456f4f
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [edx + 0x10c]
cmp eax, dword [ecx + 0x11c]
jge 0x456ecb
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x54], edx
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax + 8]
mov eax, dword [ebp - 0xc]
mov esi, dword [eax + 4]
mov eax, dword [ebp - 0xc]
mov edi, dword [eax + 4]
test edi, edi
jne 0x456eb1
mov eax, 0xd2
call fcn.0040d6c0
mov edi, dword [edi]
mov eax, edi
call fcn.00402bd0
mov eax, esi
mov edx, ebx
mov ecx, dword [ebp - 0x54]
call dword [edi + 0x158]
test al, al
jne 0x456f2a
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x144]
cmp dword [eax + 0xc], 0
je 0x456f1a
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x144]
mov ebx, dword [eax + 0xc]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x144]
mov esi, dword [eax + 0xc]
test esi, esi
jne 0x456f09
mov eax, 0xd2
call fcn.0040d6c0
mov esi, dword [esi]
mov eax, esi
call fcn.00402bd0
mov eax, ebx
call dword [esi + 0x8c]
mov eax, ebp
call fcn.00457180
mov byte [ebp - 0x10], 1
jmp 0x456fc3
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
test word [eax + 0x13a], 1
setne byte [ebp - 0x24]
jmp 0x456f4f
mov eax, ebp
call fcn.00457180
mov byte [ebp - 0x10], 1
jmp 0x456fc3
cmp byte [ebp - 0x24], 0
je 0x456f62
mov eax, ebp
call fcn.00457050
mov byte [ebp - 0x10], 4
jmp 0x456fc3
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0xd8]
mov edx, 0x4c2348
call fcn.00468f10
test al, al
jne 0x456f9f
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0xcc]
mov edx, 0x4c2348
call fcn.00468f10
test al, al
jne 0x456f9f
cmp dword [ebp - 0x14], 0xcc
jne 0x456fa8
mov eax, ebp
call fcn.00457050
jmp 0x456fbf
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + 0xc]
mov eax, dword [ebp - 0xc]
mov edx, dword [eax + 8]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 4]
call fcn.00452b60
mov byte [ebp - 0x10], 1
call fcn.0040c1c0
lea eax, [ebp - 0x1c]
call fcn.00402a20
lea eax, [ebp - 0x20]
call fcn.00402a20
pop eax
test eax, eax
je 0x456fe2
call fcn.0040c2f0
mov al, byte [ebp - 0x10]
mov edi, dword [ebp - 0x64]
mov esi, dword [ebp - 0x60]
mov ebx, dword [ebp - 0x5c]
leave
ret