Function at 0x815631c
Capabilities:
Check for software breakpoints

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x8230fb8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 0x10]
push edi
mov dword [ebp - 0x20], eax
mov al, byte [0x823d4dc]
test al, al
push 0x1f
mov dword [ebp - 0x18], ebx
pop esi
jg 0x815635f
jne 0x8156358
call fcn.08154176
test al, al
jg 0x815635f
xor eax, eax
jmp 0x81563f2
cmp ebx, 0xffff
ja 0x815639d
lea eax, [ebx - 0xd800]
mov ecx, 0x3ff
cmp ecx, eax
sbb eax, eax
and eax, 0xfffffec0
mov ecx, ebx
add eax, 0x140
sar ecx, 5
add ecx, eax
mov eax, dword [0x823d488]
movzx ecx, word [eax + ecx*2]
mov edx, ebx
and edx, esi
lea ecx, [edx + ecx*4]
movzx eax, word [eax + ecx*2]
jmp 0x81563e9
cmp ebx, 0x10ffff
ja 0x81563e2
mov ecx, dword [0x823d488]
mov eax, ebx
sar eax, 0xa
sub eax, 0x2840
movzx eax, ax
movzx eax, ax
mov edx, eax
shr edx, 5
movzx edx, word [ecx + edx*2]
and eax, esi
lea eax, [eax + edx*4]
movzx eax, word [ecx + eax*2]
push eax
call dword [0x823d490]
test eax, eax
pop ecx
jle 0x81563e2
mov ecx, ebx
sar ecx, 5
and ecx, esi
jmp 0x8156385
movzx eax, word [0x823d49c]
mov ecx, dword [0x823d4c4]
mov eax, dword [ecx + eax*4]
test al, 0x20
jne 0x8156412
xor edx, edx
mov ecx, eax
and ecx, esi
inc edx
shl edx, cl
test dl, 0xa
je 0x81565cb
sar eax, 0x14
add eax, ebx
jmp 0x81565c8
shr eax, 0x14
mov edi, eax
mov eax, dword [0x823d4c8]
shl edi, 2
lea ecx, [edi + eax]
mov eax, dword [ecx]
test al, al
jns 0x81565b4
and eax, 0x7f
movzx eax, byte [eax + 0x81e4e00]
add ecx, 4
mov ecx, dword [ecx + eax*4]
test ecx, ecx
jns 0x81565ec
call fcn.08155fbc
mov esi, dword [ebp - 0x28]
test esi, esi
mov dword [ebp - 0x24], eax
je 0x8156460
push 1
push esi
call dword [esi + 0x18]
pop ecx
pop ecx
mov dword [ebp - 0x1c], eax
jmp 0x8156464
and dword [ebp - 0x1c], 0
cmp dword [ebp - 0x24], 2
jne 0x8156512
cmp ebx, 0x49
je 0x8156480
cmp ebx, 0x4a
je 0x8156480
cmp ebx, 0x12e
jne 0x815648d
push dword [ebp - 0x1c]
call fcn.081562a3
test al, al
pop ecx
jne 0x81564a9
cmp ebx, 0xcc
je 0x81564a9
cmp ebx, 0xcd
je 0x81564a9
cmp ebx, 0x128
jne 0x8156560
mov eax, ebx
sub eax, 0x49
lea ecx, [ebp - 0x14]
mov word [ebp - 0x12], 0x307
je 0x815650a
dec eax
je 0x8156502
sub eax, 0x82
je 0x81564f2
dec eax
je 0x81564ea
sub eax, 0x5b
je 0x81564e2
sub eax, 6
je 0x81564d7
xor eax, eax
jmp 0x8156647
mov word [ebp - 0x14], 0x12f
jmp 0x815656d
mov word [ebp - 0x10], 0x303
jmp 0x81564f8
mov word [ebp - 0x10], 0x301
jmp 0x81564f8
mov word [ebp - 0x10], 0x300
mov word [ebp - 0x14], 0x69
push 3
jmp 0x815656f
mov word [ebp - 0x14], 0x6a
jmp 0x815656d
mov word [ebp - 0x14], 0x69
jmp 0x815656d
cmp dword [ebp - 0x24], 1
jne 0x8156560
cmp ebx, 0x130
jne 0x815652c
mov dword [ebp - 0x18], 0x69
jmp 0x81565cb
cmp ebx, 0x307
jne 0x8156545
mov eax, dword [ebp - 0x1c]
dec eax
push eax
call fcn.08156265
test al, al
pop ecx
je 0x81565aa
jmp 0x81564d0
cmp ebx, 0x49
jne 0x8156560
push dword [ebp - 0x1c]
call fcn.081562dc
test al, al
pop ecx
jne 0x81565aa
mov dword [ebp - 0x18], 0x131
jmp 0x81565cb
cmp ebx, 0x130
jne 0x8156575
mov ecx, 0x81e4dfc
push 2
pop eax
jmp 0x8156601
cmp ebx, 0x3a3
jne 0x81565aa
push dword [ebp - 0x1c]
mov ebx, esi
call fcn.08156023
test al, al
pop ecx
jne 0x81565a7
mov eax, dword [ebp - 0x1c]
dec eax
push eax
call fcn.0815611b
test al, al
pop ecx
je 0x81565a7
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x18], 0x3c2
jmp 0x81565cb
mov ebx, dword [ebp + 8]
mov eax, dword [0x823d4c8]
lea ecx, [edi + eax]
mov eax, dword [ecx]
test al, 2
je 0x81565cb
add ecx, 4
and eax, 1
movzx eax, byte [eax + 0x81e4e00]
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x18], eax
mov esi, dword [ebp - 0x18]
xor eax, eax
mov ecx, 0xffff
cmp esi, ecx
seta al
inc eax
cmp eax, dword [ebp + 0x14]
jg 0x8156641
cmp esi, ecx
mov ecx, dword [ebp - 0x20]
ja 0x8156623
mov word [ecx], si
jmp 0x8156641
mov eax, dword [0x823d4d0]
and ecx, 0xffff
lea ecx, [eax + ecx*2]
movzx eax, byte [ecx]
and eax, esi
inc ecx
inc ecx
mov esi, dword [ebp + 0x14]
cmp eax, esi
jge 0x815660a
mov esi, eax
xor edx, edx
test esi, esi
jle 0x8156647
mov di, word [ecx]
mov ebx, dword [ebp - 0x20]
mov word [ebx + edx*2], di
inc edx
inc ecx
inc ecx
cmp edx, esi
jl 0x8156610
jmp 0x8156647
mov edx, esi
sar edx, 0xa
sub edx, 0x2840
mov word [ecx], dx
mov edx, esi
and dx, 0x3ff
or dx, 0xdc00
mov word [ecx + 2], dx
cmp esi, ebx
jne 0x8156647
neg eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.08047f9e
leave
ret