Function at 0x15127e6
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xa8
mov eax, dword [0x42b238]
mov edx, dword [esp + 0xd4]
xor ebx, ebx
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0xa4], eax
mov eax, edx
mov edi, ecx
and eax, 3
mov eax, edx
setne bl
shr ecx, 0x16
inc ebx
and cl, 1
imul ebx, dword [0x4283d4]
mov ebp, ebx
shl ebx, cl
and eax, 3
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x10], ebx
je 0x1512853
mov esi, dword [0x428ea4]
lea ecx, [eax + eax]
cmp ecx, dword [esi + 0x12c]
jge 0x151351a
imul ebp, eax
mov eax, dword [0x4283d8]
mov ecx, dword [esp + 0xc4]
xor esi, esi
add ebp, dword [0x4283e8]
imul ecx, eax
add ecx, dword [0x4283e4]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x3c], ecx
mov ecx, edi
test ecx, 0x40000000
jne 0x151288e
mov dword [esp], 0
jmp 0x15128ba
cmp dword [0x428ec4], 0
je 0x15128a8
mov ecx, dword [0x428ea4]
cmp dword [ecx + 0x158], 0
mov ecx, edi
je 0x1512885
and ecx, 0xffcc0000
or ecx, 0x20b04
xor edi, edi
inc edi
mov dword [esp], edi
cmp dword [esp + 8], 0
je 0x15128d3
cmp dword [0x428ec8], 3
jne 0x15128d3
xor edx, edx
inc edx
mov dword [esp + 8], edx
jmp 0x15128e9
and dl, 3
je 0x15128e9
cmp dl, 1
jne 0x15128e4
mov esi, 4
jmp 0x15128e9
mov esi, 0xc
mov ebp, ecx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0xc8]
shr ebp, 0x13
mov ebx, ebp
and ebx, 0x10
movzx ecx, word [ecx]
mov edx, ecx
add edx, 0xffffdc46
movzx edx, dx
cmp edx, 3
ja 0x1512929
add cl, 0x46
cmp cl, 3
ja 0x1512935
movzx ecx, cl
jmp dword [ecx*4 + 0x41c524]
mov dword [esp + 0x2c], 0
xor edx, edx
jmp 0x1512983
xor edx, edx
jmp 0x1512952
mov eax, dword [esp + 8]
or eax, 1
cmp eax, 3
mov eax, dword [esp + 0xc8]
sete cl
and ebp, 1
shl edx, cl
mov cx, word [0x427fb6]
mov dword [esp + 0x2c], edx
mov edx, ebp
mov word [eax], cx
and dword [esp + 4], 0xfff7ffff
mov ebp, dword [esp + 0xcc]
mov eax, ecx
or esi, ebx
mov dword [esp + 0x38], edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x15129df
cmp ebp, 2
jl 0x15129bc
mov eax, dword [esp + 0xc8]
movzx eax, word [eax + 2]
and eax, 0xfc00
cmp eax, 0xdc00
jne 0x15129c1
jmp 0x15129df
cmp ebp, 1
jne 0x15129df
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xcc]
xor eax, eax
mov word [ecx + eax*2], 0xfffd
inc eax
cmp eax, edx
jl 0x15129d1
mov cx, word [ecx]
mov ebp, dword [esp + 4]
mov eax, esi
and ecx, 0xff00
or eax, 0x20
cmp ecx, 0xf000
cmovne eax, esi
mov esi, ebp
mov edi, ebp
mov edx, ebp
shr esi, 9
and edi, 0x1ff
and esi, 0x1ff
cmp dword [0x428458], 2
sete cl
shr edx, 0x12
and dl, cl
movzx ecx, dl
mov dl, byte [0x42845c]
or ecx, eax
mov ebx, ecx
or ebx, 2
test dl, dl
cmove ebx, ecx
test ebp, 0x80000
cmove ebx, ecx
mov ecx, ebx
call fcn.01513531
xor eax, eax
cmp dword [ebx*4 + 0x428460], eax
jne 0x1512a5f
mov ecx, dword [esp + 0x38]
xor eax, eax
inc eax
test bl, 2
cmovne ecx, eax
and ebx, 0xfffffffc
mov dword [esp + 0x38], ecx
mov ecx, ebx
call fcn.01513531
mov eax, dword [ebx*4 + 0x428460]
mov edx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
test eax, eax
mov ecx, edx
cmove ebx, eax
and ecx, 0x100000
mov eax, esi
cmove eax, edi
test ecx, ecx
mov ecx, dword [0x428560]
cmove edi, esi
cmp dword [esp], 0
jne 0x1512abf
and edx, 0x40000
je 0x1512abf
test ecx, ecx
mov edx, edi
je 0x1512ac1
cmp eax, 0xf
ja 0x1512ab3
or eax, 8
jmp 0x1512ac1
xor edx, edx
cmp eax, 0xff
seta dl
or eax, edx
mov edx, edi
test dword [esp + 4], 0x200000
je 0x1512ae6
test ecx, ecx
je 0x1512ae6
cmp edx, 0xf
ja 0x1512ad9
or edx, 8
jmp 0x1512ae6
xor ecx, ecx
cmp edx, 0xff
seta cl
or edx, ecx
mov esi, dword [eax*4 + 0x428564]
mov eax, dword [edx*4 + 0x428564]
mov dword [esp], eax
push dword [ebx*4 + 0x428460]
mov edi, dword [esp + 0xc0]
push edi
call dword [0x4b9644]
mov dword [esp + 0x5c], esi
push esi
push edi
call dword [0x4b9664]
push dword [esp]
push edi
call dword [0x4b964c]
cmp dword [esp + 4], 0
js 0x1512b2e
push 2
push edi
jmp 0x1512b31
push 1
push edi
call dword [0x4b9650]
mov ebx, dword [esp + 0xcc]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
imul esi, ebx
mov dword [esp + 0x70], ecx
mov edx, eax
add esi, ecx
mov ecx, dword [0x4283d8]
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], esi
add ecx, edx
test ebx, ebx
mov dword [esp + 0x7c], ecx
jle 0x1512c16
xor ecx, ecx
xor eax, eax
xor edx, edx
mov di, word [ebp + edx*2]
lea esi, [edx + 1]
cmp esi, ebx
jge 0x1512be4
movzx ebx, di
cmp ebx, 0xdb40
jne 0x1512bad
movzx ebx, word [ebp + edx*2 + 2]
add ebx, 0x2300
movzx ebx, bx
cmp ebx, 0xf0
mov ebx, dword [esp + 0xcc]
jae 0x1512bc4
jmp 0x1512c09
mov ebx, edi
and ebx, 0xfc00
cmp ebx, 0xd800
mov ebx, dword [esp + 0xcc]
jne 0x1512be4
movzx ebx, word [ebp + edx*2 + 2]
and ebx, 0xfc00
cmp ebx, 0xdc00
mov ebx, dword [esp + 0xcc]
jne 0x1512be4
add eax, dword [esp + 0x10]
jmp 0x1512c09
lea esi, [edi - 0x180b]
movzx esi, si
cmp esi, 3
jb 0x1512c07
mov esi, dword [esp + 0x10]
and edi, 0xfff0
cmp edi, 0xfe00
cmove esi, ecx
add eax, esi
mov esi, edx
inc esi
cmp esi, ebx
mov edx, esi
jl 0x1512b77
jmp 0x1512c18
xor eax, eax
add eax, dword [esp + 0x14]
mov ecx, dword [0x428ea4]
mov dword [esp + 0x78], eax
mov ecx, dword [ecx + 0x12c]
imul ecx, dword [0x4283d4]
add ecx, dword [0x4283e8]
cmp eax, ecx
jle 0x1512c41
mov dword [esp + 0x78], ecx
cmp byte [0x42897c], 1
jne 0x1512c7b
mov eax, dword [esp + 0x10]
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
mov dword [esp + 0x24], ecx
push 6
push dword [esp + 0xc0]
call dword [0x4b9660]
xor eax, eax
mov dword [esp + 0xc], 0
inc eax
mov dword [esp + 0x44], eax
jmp 0x1512c9f
push 0
push dword [esp + 0xc0]
call dword [0x4b9660]
mov eax, dword [0x428450]
mov dword [esp + 0x24], 0
mov dword [esp + 0x44], ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x2c]
test ebx, ebx
jle 0x151348d
test eax, eax
mov eax, dword [esp + 0x3c]
setns byte [esp + 0x23]
lea eax, [ecx + eax]
mov dword [esp + 0x28], eax
xor eax, eax
inc eax
mov edx, dword [esp + 0x44]
mov ecx, ebx
mov edi, ebx
mov dword [esp + 0x18], eax
cmp edx, ebx
cmovle ecx, edx
cmp edx, 1
mov ebx, ecx
mov dword [esp + 0x64], ecx
jne 0x1512d6b
movzx eax, word [ebp]
mov ebx, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x1512d0b
movzx eax, word [ebp + 2]
xor ebx, ebx
and eax, 0xfc00
cmp eax, 0xdc00
sete bl
add ebx, ecx
mov eax, edi
sub eax, ebx
jle 0x1512d6b
movzx ecx, word [ebp + ebx*2]
mov esi, ebx
lea edx, [ecx - 0x180b]
movzx edx, dx
cmp edx, 3
jb 0x1512d64
mov edx, ecx
and edx, 0xfff0
movzx edx, dx
cmp edx, 0xfe00
je 0x1512d64
cmp eax, 2
jl 0x1512d69
movzx eax, cx
cmp eax, 0xdb40
jne 0x1512d69
mov ebx, esi
movzx eax, word [ebp + ebx*2 + 2]
lea ecx, [ebx + 2]
add eax, 0x2300
movzx eax, ax
cmp eax, 0xf0
cmovb ebx, ecx
jmp 0x1512d6b
mov ebx, esi
inc ebx
jmp 0x1512d6b
mov ebx, esi
cmp ebx, dword [0x428454]
mov dword [esp + 0x30], edi
jle 0x1512db3
lea eax, [ebx + ebx*8]
mov ecx, eax
sar ecx, 0x1f
shr ecx, 0x1d
add ecx, eax
sar ecx, 3
add ecx, 0x10
mov dword [0x428454], ecx
push 4
push ecx
push dword [0x428450]
call fcn.014c7697
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov dword [0x428450], eax
test ecx, ecx
cmovne ecx, eax
mov dword [esp + 0xc], ecx
test ebx, ebx
mov dword [esp + 0x1c], ebp
mov dword [esp], ebx
jle 0x1512e8c
mov eax, dword [0x428450]
xor ecx, ecx
mov edx, dword [esp + 0x10]
mov dword [eax + ecx*4], edx
lea edx, [ecx + 1]
cmp edx, ebx
mov bx, word [ebp + ecx*2]
jge 0x1512e43
movzx ebp, bx
lea esi, [eax + ecx*4]
cmp ebp, 0xdb40
jne 0x1512e14
mov edi, dword [esp + 0x1c]
movzx ebp, word [edi + ecx*2 + 2]
add ebp, 0x2300
movzx ebp, bp
cmp ebp, 0xef
mov ebp, edi
ja 0x1512e28
test ecx, ecx
jle 0x1512e71
mov dword [eax + ecx*4 - 4], 0
jmp 0x1512e71
mov ebp, ebx
and ebp, 0xfc00
cmp ebp, 0xd800
mov ebp, dword [esp + 0x1c]
jne 0x1512e43
mov edi, dword [esp + 0x1c]
movzx ebp, word [edi + ecx*2 + 2]
and ebp, 0xfc00
cmp ebp, 0xdc00
mov ebp, dword [esp + 0x1c]
je 0x1512e71
lea edx, [ebx - 0x180b]
movzx edx, dx
cmp edx, 3
jb 0x1512e67
and ebx, 0xfff0
movzx edx, bx
cmp edx, 0xfe00
je 0x1512e67
mov ebx, dword [esp]
jmp 0x1512e83
test ecx, ecx
jle 0x1512e79
lea esi, [eax + ecx*4 - 4]
mov edx, ecx
mov ecx, edx
mov dword [esi], 0
mov ebx, dword [esp]
mov edx, dword [esp + 0x10]
mov dword [eax + ecx*4], edx
inc ecx
cmp ecx, ebx
jl 0x1512dc9
movzx eax, word [ebp]
cmp dword [0x4278c8], 0
je 0x1513060
mov ecx, eax
and ecx, 0xff00
movzx ecx, cx
cmp ecx, 0xf100
jne 0x1513060
cmp ebx, dword [0x428984]
jle 0x1512ee0
push dword [0x428980]
call fcn.014c7790
add esp, 4
mov dword [0x428984], ebx
push 2
push ebx
call fcn.014c75c3
add esp, 8
mov dword [0x428980], eax
test ebx, ebx
jle 0x151351a
xor ebx, ebx
xor ebp, ebp
xor esi, esi
mov eax, dword [0x428980]
mov word [eax + esi*2], 0xfffd
mov edi, dword [esp + 0x1c]
movzx eax, byte [edi + ebp*2]
push eax
push dword [0x4278cc]
call dword [0x4b9a0c]
test eax, eax
je 0x1512f54
mov al, byte [edi + ebp*2]
mov ecx, dword [esp + 0x10]
mov byte [esp + 0x80], al
mov al, byte [edi + ebp*2 + 2]
inc ebp
mov byte [esp + 0x81], al
mov eax, dword [0x428450]
add dword [eax + esi*4], ecx
mov eax, dword [0x428980]
add eax, ebx
xor ecx, ecx
inc ecx
push ecx
push eax
push 2
lea eax, [esp + 0x8c]
push eax
push 4
push dword [0x4278cc]
jmp 0x1512f7b
mov al, byte [edi + ebp*2]
mov byte [esp + 0x80], al
mov eax, dword [0x428980]
add eax, ebx
xor ecx, ecx
inc ecx
push ecx
push eax
push ecx
lea eax, [esp + 0x8c]
push eax
push 4
push dword [0x4278cc]
call dword [0x4b9a40]
inc ebp
inc esi
add ebx, 2
cmp ebp, dword [esp]
jl 0x1512eee
mov eax, esi
dec eax
js 0x151351a
xor eax, eax
cmp dword [esp + 0x18], 0
mov edx, 0
mov edi, dword [esp + 0x24]
setne al
xor ecx, ecx
sub ecx, dword [0x4283d8]
cmp dword [esp + 8], 3
lea eax, [eax + eax + 4]
cmovne ecx, edx
mov edx, dword [esp + 0x14]
add ecx, dword [esp + 0x28]
lea edi, [edx + edi]
push dword [esp + 0xc]
push esi
push dword [0x428980]
lea edx, [esp + 0x7c]
push edx
push eax
push ecx
push edi
push dword [esp + 0xd8]
call dword [0x4b95f0]
test dword [esp + 4], 0x40000
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
je 0x1513050
cmp dword [0x428458], 1
jne 0x1513050
push 1
mov eax, dword [esp + 0xc0]
push eax
call dword [0x4b9650]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4283d8]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec edi
add eax, dword [esp + 0x28]
push dword [esp + 0xc]
push esi
push dword [0x428980]
lea ecx, [esp + 0x7c]
push ecx
push 4
push eax
push edi
push dword [esp + 0xd8]
call dword [0x4b95f0]
mov eax, dword [0x428450]
mov dword [eax], 0xffffffff
jmp 0x1513460
and eax, 0xfe00
cmp eax, 0xf000
jne 0x151316d
cmp ebx, dword [0x42898c]
jle 0x1513094
mov dword [0x42898c], ebx
push 1
push ebx
push dword [0x428988]
call fcn.014c7697
add esp, 0xc
mov dword [0x428988], eax
mov eax, dword [0x428988]
test ebx, ebx
jle 0x15130af
mov ecx, dword [esp]
mov edx, eax
mov esi, ebp
mov bl, byte [esi]
add esi, 2
mov byte [edx], bl
inc edx
dec ecx
jne 0x15130a4
xor ecx, ecx
cmp dword [esp + 0x18], 0
mov edx, dword [0x4283d8]
mov esi, 0
mov edi, dword [esp + 0x24]
setne cl
neg edx
cmp dword [esp + 8], 3
lea ecx, [ecx + ecx + 4]
cmovne edx, esi
mov esi, dword [esp + 0x14]
add edx, dword [esp + 0x28]
lea esi, [esi + edi]
push dword [esp + 0xc]
push dword [esp + 4]
push eax
lea eax, [esp + 0x7c]
push eax
push ecx
push edx
push esi
push dword [esp + 0xd8]
call dword [0x4b95ec]
test dword [esp + 4], 0x40000
mov ebx, dword [esp + 0x30]
je 0x1513460
cmp dword [0x428458], 1
jne 0x1513460
push 1
mov eax, dword [esp + 0xc0]
mov edi, eax
push edi
call dword [0x4b9650]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4283d8]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec esi
add eax, dword [esp + 0x28]
push dword [esp + 0xc]
push dword [esp + 4]
push dword [0x428988]
lea ecx, [esp + 0x7c]
push ecx
push 4
push eax
push esi
push edi
call dword [0x4b95ec]
jmp 0x1513460
cmp dword [0x428994], ebx
jge 0x1513199
push dword [0x428990]
call fcn.014c7790
add esp, 4
mov dword [0x428994], ebx
push 2
push ebx
call fcn.014c75c3
add esp, 8
mov dword [0x428990], eax
test ebx, ebx
mov ebx, dword [esp + 0x30]
jle 0x15133f7
mov edx, dword [0x428990]
mov esi, dword [esp]
xor eax, eax
movzx ecx, word [ebp + eax*2]
mov word [edx + eax*2], cx
inc eax
cmp esi, eax
jne 0x15131b0
mov dword [esp + 0x40], edx
cmp dword [esp + 8], 3
mov eax, dword [0x4283d8]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
mov ecx, 0
cmovne eax, ecx
lea edi, [edi + edx]
test esi, esi
jle 0x1513402
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp]
mov ebx, edi
mov dword [esp + 0x60], edi
sub ecx, eax
mov eax, dword [0x428450]
add ecx, dword [esp + 0x2c]
cmp dword [esp + 0x18], 0
mov dword [esp + 0x58], eax
setne al
xor ebp, ebp
mov dword [esp + 0x48], ecx
and al, byte [esp + 0x23]
movzx eax, al
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
movzx eax, word [eax + ebp*2]
push eax
call fcn.014c5619
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x58]
lea ecx, [eax + ebp*4]
mov eax, ebx
mov dword [esp + 0x18], ecx
mov ebx, dword [ecx]
mov dword [esp + 0x34], ebp
inc ebp
mov dword [esp + 0x54], eax
add ebx, eax
cmp ebp, esi
jge 0x1513271
mov esi, dword [esp + 0x40]
movzx eax, word [esi + ebp*2]
push eax
call fcn.014c5619
add esp, 4
cmp edi, eax
jne 0x1513275
mov eax, dword [esp + 0x58]
add ebx, dword [eax + ebp*4]
inc ebp
cmp ebp, dword [esp]
jl 0x1513251
jmp 0x1513275
mov esi, dword [esp + 0x40]
mov al, byte [0x42897c]
mov ecx, dword [esp + 0x18]
mov edx, ebp
test al, al
mov eax, 0
cmovne ecx, eax
mov eax, dword [esp + 0x34]
sub edx, eax
test edi, edi
lea esi, [esi + eax*2]
je 0x151338b
xor eax, eax
mov dword [esp + 0x6c], esi
lea edi, [edx + edx + 2]
inc eax
push eax
push edi
mov esi, edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x54], esi
call fcn.014c75c3
add esp, 8
mov dword [esp + 0x34], eax
xor eax, eax
inc eax
push eax
push esi
call fcn.014c75c3
add esp, 8
mov dword [esp + 0x68], eax
lea eax, [esp + 0x84]
xor ecx, ecx
mov dword [eax + 4], ecx
mov dword [eax], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0x14], ecx
mov dword [eax + 0x10], ecx
mov dword [eax + 0x1c], ecx
mov dword [eax + 0x18], ecx
push edi
push ecx
mov esi, dword [esp + 0x3c]
push esi
call fcn.01522aac
add esp, 0xc
push dword [esp + 0x4c]
push 3
mov edi, dword [esp + 0x70]
push edi
call fcn.01522aac
add esp, 0xc
mov dword [esp + 0x80], 0x24
mov dword [esp + 0x98], esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x94], edi
mov dword [esp + 0x9c], esi
push 0x8113b
lea eax, [esp + 0x84]
push eax
mov eax, 0
push eax
push esi
mov edi, esi
push dword [esp + 0x7c]
mov esi, dword [esp + 0xd0]
push esi
call dword [0x4b960c]
xor eax, eax
cmp dword [esp + 0x50], 0
setne al
lea eax, [eax + eax + 0x14]
push dword [esp + 0x18]
push edi
push dword [esp + 0x3c]
lea ecx, [esp + 0x7c]
push ecx
push eax
push dword [esp + 0x5c]
push dword [esp + 0x6c]
push esi
call dword [0x4b95ec]
jmp 0x15133b8
xor eax, eax
cmp dword [esp + 0x50], 0
setne al
lea eax, [eax + eax + 4]
push ecx
push edx
push esi
lea ecx, [esp + 0x7c]
push ecx
push eax
push dword [esp + 0x5c]
push dword [esp + 0x6c]
mov esi, dword [esp + 0xd8]
push esi
call dword [0x4b95f0]
push esi
call dword [0x4b95f4]
mov edi, eax
push 1
push esi
call dword [0x4b9650]
mov esi, dword [esp]
xor eax, eax
cmp ebp, esi
jl 0x1513218
push edi
push dword [esp + 0xc0]
call dword [0x4b9650]
mov eax, dword [esp + 4]
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x60]
jmp 0x1513406
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
lea edi, [eax + ecx]
mov eax, dword [esp + 4]
test eax, 0x40000
je 0x1513460
cmp dword [0x428458], 1
jne 0x1513460
push 1
mov eax, dword [esp + 0xc0]
mov esi, eax
push esi
call dword [0x4b9650]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4283d8]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec edi
add eax, dword [esp + 0x28]
push dword [esp + 0xc]
push dword [esp + 4]
push dword [0x428990]
lea ecx, [esp + 0x7c]
push ecx
push 4
push eax
push edi
push esi
call dword [0x4b95f0]
push 1
push dword [esp + 0xc0]
call dword [0x4b9650]
mov eax, dword [esp + 0x64]
mov ecx, dword [esp]
imul eax, dword [esp + 0x10]
lea ebp, [ebp + ecx*2]
add dword [esp + 0x14], eax
xor eax, eax
sub ebx, ecx
jg 0x1512cc4
cmp dword [esp + 8], 2
je 0x151351a
test dword [esp + 4], 0x80000
sete al
cmp dword [esp + 0x38], 0
jne 0x15134b4
or al, byte [0x42845c]
test al, 1
jne 0x151351a
mov edi, dword [0x428998]
cmp dword [esp + 8], 3
jne 0x15134c9
add edi, edi
sub edi, dword [0x4283d8]
xor ebp, ebp
push dword [esp + 0x5c]
push ebp
push ebp
call dword [0x4b95d8]
push eax
mov ebx, dword [esp + 0xc0]
push ebx
call dword [0x4b9644]
mov esi, eax
mov eax, dword [esp + 0x74]
add eax, edi
push ebp
push eax
push dword [esp + 0x78]
push ebx
call dword [0x4b9634]
add edi, dword [esp + 0x74]
push edi
push dword [esp + 0x7c]
push ebx
call dword [0x4b9630]
push esi
push ebx
call dword [0x4b9644]
push eax
call dword [0x4b95e4]
mov ecx, dword [esp + 0xa4]
call fcn.0151fa06
add esp, 0xa8
pop esi
pop edi
pop ebx
pop ebp
ret
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov esi, dword [esp + 0x3c]
test esi, esi
js 0x1513664
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
jmp 0x15127e6
mov eax, dword [esp + 0x40]
xor ecx, ecx
inc ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
mov dword [esp + 8], eax
cmp ebx, 2
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov edi, dword [esp + 0x28]
jl 0x15136b4
movzx eax, word [ebp]
and eax, 0xfc00
cmp eax, 0xd800
jne 0x15136b4
movzx eax, word [ebp + 2]
xor ecx, ecx
and eax, 0xfc00
cmp eax, 0xdc00
sete cl
inc ecx
mov eax, ebx
sub eax, ecx
jle 0x1513737
mov dword [esp], ecx
movzx ecx, word [ebp + ecx*2]
lea edx, [ecx - 0x180b]
movzx edx, dx
cmp edx, 3
jb 0x1513744
mov edx, ecx
and edx, 0xfff0
movzx edx, dx
cmp edx, 0xfe00
je 0x1513744
mov edx, dword [esp]
cmp eax, 2
jl 0x1513737
movzx eax, cx
cmp eax, 0xdb40
jne 0x1513737
movzx eax, word [ebp + edx*2 + 2]
add eax, 0x2300
movzx eax, ax
cmp eax, 0xef
ja 0x1513737
and esi, 0x7fffffff
lea eax, [edx + 2]
mov dword [esp + 0x10], eax
push dword [esp + 0xc]
push esi
push eax
push ebp
push dword [esp + 0x18]
push dword [esp + 0x18]
push edi
call 0x15127e6
add esp, 0x1c
mov eax, dword [esp]
lea ebp, [ebp + eax*2 + 4]
jmp 0x1513771
and esi, 0x7fffffff
xor eax, eax
jmp 0x15137ec
mov eax, dword [esp]
and esi, 0x7fffffff
inc eax
mov dword [esp + 0x10], eax
push dword [esp + 0xc]
push esi
push eax
push ebp
push dword [esp + 0x18]
push dword [esp + 0x18]
push edi
call 0x15127e6
add esp, 0x1c
mov eax, dword [esp]
lea ebp, [ebp + eax*2 + 2]
sub ebx, dword [esp + 0x10]
mov eax, 0x80000000
jmp 0x15137ec
cmp ebx, 2
jl 0x15137c8
movzx ecx, word [ebp]
and ecx, 0xfc00
cmp ecx, 0xd800
jne 0x15137c8
movzx ecx, word [ebp + 2]
and ecx, 0xfc00
cmp ecx, 0xdc00
jne 0x15137c8
or eax, esi
push dword [esp + 0xc]
push eax
push 2
push ebp
lea ebp, [ebp + 2]
push dword [esp + 0x18]
push dword [esp + 0x18]
push edi
call 0x15127e6
add esp, 0x1c
add ebx, 0xfffffffe
jmp 0x15137e4
dec ebx
or eax, esi
push dword [esp + 0xc]
push eax
push 1
push ebp
push dword [esp + 0x18]
push dword [esp + 0x18]
push edi
call 0x15127e6
add esp, 0x1c
add ebp, 2
mov eax, 0x80000000
test ebx, ebx
jne 0x151377c
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret