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

Disassembly:
push ebp
push edi
lea edi, [edx + 0xac]
push esi
push ebx
mov esi, 0x4831e0
mov ebx, ecx
mov ecx, 0x45
sub esp, 0x22c
mov dword [edx + 4], 0
mov dword [edx], 0
mov dword [esp + 0x1c], eax
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x14], 0
mov dword [edx + 0x10], 0
mov dword [edx + 0x18], 0
mov dword [edx + 0x1c], 0
mov dword [edx + 0x20], 0
mov dword [edx + 0x24], 0
mov dword [edx + 0x28], 0
mov byte [edx + 0x2c], 0
mov dword [edx + 0x48], 0
mov dword [edx + 0x44], 0
mov dword [edx + 0x4c], 0
mov dword [edx + 0x50], 0
mov dword [edx + 0x54], 0
mov dword [edx + 0x58], 0
mov dword [edx + 0x5c], 0
mov byte [edx + 0x60], 0
mov dword [edx + 0x7c], 0
mov dword [edx + 0x78], 0
mov dword [edx + 0x80], 0
mov dword [edx + 0x84], 0
mov dword [edx + 0x88], 0
mov dword [edx + 0x8c], 0
mov dword [edx + 0x90], 0
mov byte [edx + 0x94], 0
mov dword [esp + 0x24], edi
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx]
mov dword [edx + 0x10], eax
mov eax, dword [ebx + 4]
mov dword [edx + 0x14], eax
mov eax, dword [ebx]
mov dword [edx + 0x78], eax
mov eax, dword [ebx + 4]
mov dword [edx + 0x7c], eax
mov eax, dword [ebx]
mov dword [edx + 0xac], eax
mov eax, dword [ebx + 4]
mov dword [edx + 0xb0], eax
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
cmp eax, 0xa
mov dword [esp + 0x18], eax
ja case.default.0x4555ee
mov ebp, edx
jmp dword [eax*4 + 0x482f14]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x28]
test edx, edx
je 0x455d70
mov eax, dword [ebx + 8]
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x18], 0
mov dword [ebp], eax
mov dword [ebp + 4], edx
mov eax, dword [esp + 0x18]
add esp, 0x22c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x60]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x20], edx
mov ebx, eax
mov esi, dword [esp + 0x20]
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x28]
mov edx, esi
call dbg.optimize_node_left
test eax, eax
mov dword [esp + 0x18], eax
jne 0x45561b
cmp ebx, dword [esp + 0x1c]
je 0x455d40
mov eax, dword [esp + 0x68]
and dword [ebp + 8], eax
lea edx, [esp + 0x70]
mov eax, dword [esp + 0x6c]
and dword [ebp + 0xc], eax
mov eax, dword [esp + 0x28]
lea esi, [eax + 8]
lea eax, [ebp + 0x10]
mov ecx, esi
call sym._alt_merge_opt_exact_info.isra.14
lea eax, [ebp + 0x44]
lea edx, [esp + 0xa4]
mov ecx, esi
call sym._alt_merge_opt_exact_info.isra.14
lea eax, [ebp + 0x78]
lea edx, [esp + 0xd8]
mov ecx, esi
call sym._alt_merge_opt_exact_info.isra.14
mov esi, dword [ebp + 0xbc]
test esi, esi
je 0x45576a
mov ecx, dword [esp + 0x11c]
test ecx, ecx
je 0x455f80
mov edx, dword [ebp + 0xb0]
mov eax, dword [esp + 0x10c]
cmp edx, eax
jb 0x455f80
cmp eax, dword [ebp + 0xac]
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx + 8]
jae 0x4556f2
mov dword [ebp + 0xac], eax
mov eax, dword [esp + 0x110]
cmp edx, eax
jae 0x455703
mov dword [ebp + 0xb0], eax
lea eax, [ecx + 0xc]
mov dword [esp + 0x2c], ebx
xor edi, edi
xor esi, esi
mov ebx, eax
cmp byte [esp + esi + 0x120], 0
je 0x455eb0
mov byte [ebp + esi + 0xc0], 1
cmp esi, 0x7f
mov eax, 4
jg 0x455739
mov edx, esi
mov eax, ebx
call sym._map_position_value.isra.7.part.8
add edi, eax
add esi, 1
cmp esi, 0x100
jne 0x455710
mov eax, dword [esp + 0x114]
and dword [ebp + 0xb4], eax
mov eax, dword [esp + 0x118]
and dword [ebp + 0xb8], eax
mov ebx, dword [esp + 0x2c]
mov dword [ebp + 0xbc], edi
mov eax, dword [esp + 0x60]
cmp dword [ebp], eax
jbe 0x455776
mov dword [ebp], eax
mov eax, dword [esp + 0x64]
cmp dword [ebp + 4], eax
jae 0x455782
mov dword [ebp + 4], eax
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x455642
jmp 0x45561b
mov ecx, dword [ebx + 0x14]
mov edi, dword [ecx + 0x68]
lea eax, [ecx + 0x48]
test edi, edi
cmove edi, eax
mov eax, dword [esp + 0x1c]
test byte [eax + 4], 0x80
jne 0x455ac3
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x40]
mov esi, dword [eax + 0x24]
add eax, 0xc
test esi, esi
cmove esi, eax
mov eax, dword [esi]
mov eax, dword [edi + eax*4]
call dbg.get_min_len
test eax, eax
mov dword [esp + 0x18], eax
jne 0x45561b
mov eax, dword [esi]
mov ecx, dword [ebx + 0x14]
lea edx, [esp + 0x44]
mov eax, dword [edi + eax*4]
call dbg.get_max_len
test eax, eax
mov dword [esp + 0x18], eax
jne 0x45561b
mov eax, dword [esp + 0x1c]
cmp dword [eax + 8], 1
jle 0x45643b
lea eax, [esp + 0x48]
mov ecx, 1
mov dword [esp + 0x20], ebp
mov ebp, ecx
mov dword [esp + 0x28], eax
jmp 0x455862
mov eax, dword [esi + ebp*4]
mov ecx, dword [ebx + 0x14]
lea edx, [esp + 0x60]
mov eax, dword [edi + eax*4]
call dbg.get_max_len
test eax, eax
jne 0x455878
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x40], eax
jbe 0x455844
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x60]
cmp dword [esp + 0x44], eax
jae 0x455852
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x1c]
add ebp, 1
cmp dword [eax + 8], ebp
jle 0x456437
mov eax, dword [esi + ebp*4]
mov ecx, dword [ebx + 0x14]
mov edx, dword [esp + 0x28]
mov eax, dword [edi + eax*4]
call dbg.get_min_len
test eax, eax
je 0x455820
mov dword [esp + 0x18], eax
jmp 0x45561b
mov edi, dword [esp + 0x1c]
lea esi, [esp + 0x60]
mov ecx, ebx
mov edx, esi
mov eax, dword [edi + 8]
call dbg.optimize_node_left
test eax, eax
mov dword [esp + 0x18], eax
jne 0x45561b
mov edx, dword [edi + 0xc]
cmp edx, 0
jne 0x4560d2
mov ecx, dword [edi + 0x10]
cmp ecx, 0xffffffff
je 0x456346
mov ebx, dword [esp + 0x64]
xor esi, esi
xor edx, edx
test ecx, ecx
je 0x4558e0
xor edx, edx
mov eax, 0xffffffff
div ecx
mov edx, 0xffffffff
cmp eax, ebx
jbe 0x4558e0
imul ecx, ebx
mov edx, ecx
lea esi, [esi]
mov dword [ebp], esi
mov dword [ebp + 4], edx
jmp 0x45561b
mov eax, dword [ebx + 8]
mov esi, dword [eax + 8]
cmp esi, 1
je 0x455f95
mov eax, dword [eax + 0xc]
mov dword [ebp], eax
mov dword [ebp + 4], esi
mov dword [esp + 0x18], 0
jmp 0x45561b
mov eax, dword [esp + 0x1c]
mov edi, dword [ebx + 8]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax + 0xc]
mov esi, ecx
sub esi, edx
test al, 2
je 0x456061
test al, 4
jne 0x455df1
lea eax, [ebp + 0x10]
mov dword [esp], edi
call sym._concat_opt_exact_info_str.isra.13
test esi, esi
mov dword [ebp + 0x24], 1
mov eax, esi
jg 0x456233
mov dword [ebp], esi
mov dword [ebp + 4], eax
cmp dword [ebp + 0x28], esi
jne 0x45561b
mov dword [ebp + 0x20], 1
jmp 0x45561b
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 8]
cmp eax, 2
je 0x4561b1
cmp eax, 4
je 0x455e90
cmp eax, 1
je 0x4561d6
mov dword [esp + 0x18], 0
jmp 0x45561b
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 4]
cmp eax, 0x10
je 0x455e40
jle 0x4560b2
cmp eax, 0x400
jne 0x455e20
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x60]
mov ecx, ebx
mov eax, dword [eax + 8]
call dbg.optimize_node_left
test eax, eax
mov dword [esp + 0x18], eax
jne 0x45561b
mov eax, dword [esp + 0x88]
test eax, eax
jle 0x456380
mov eax, dword [esp + 0x70]
mov dword [ebp + 0x78], eax
mov eax, dword [esp + 0x74]
mov dword [ebp + 0x7c], eax
mov eax, dword [esp + 0x78]
mov dword [ebp + 0x80], eax
mov eax, dword [esp + 0x7c]
mov dword [ebp + 0x84], eax
mov eax, dword [esp + 0x80]
mov dword [ebp + 0x88], eax
mov eax, dword [esp + 0x84]
mov dword [ebp + 0x8c], eax
mov eax, dword [esp + 0x88]
mov dword [ebp + 0x90], eax
mov eax, dword [esp + 0x8c]
mov dword [ebp + 0x94], eax
mov eax, dword [esp + 0x90]
mov dword [ebp + 0x98], eax
mov eax, dword [esp + 0x94]
mov dword [ebp + 0x9c], eax
mov eax, dword [esp + 0x98]
mov dword [ebp + 0xa0], eax
mov eax, dword [esp + 0x9c]
mov dword [ebp + 0xa4], eax
mov eax, dword [esp + 0xa0]
mov dword [ebp + 0xa8], eax
mov dword [ebp + 0x88], 0
mov ebp, dword [esp + 0x11c]
test ebp, ebp
jle 0x45561b
lea esi, [esp + 0x10c]
mov ecx, 0x45
mov edi, dword [esp + 0x24]
rep movsd dword es:[edi], dword [esi]
jmp 0x45561b
mov eax, dword [esp + 0x1c]
test byte [eax + 4], 0x80
je 0x456315
mov dword [ebp + 4], 0xffffffff
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
add esp, 0x22c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebx]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x48], eax
mov eax, dword [ebx + 4]
mov dword [esp + 0x4c], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x50], eax
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x54], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x58], eax
mov eax, dword [ebx + 0x14]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x48]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x60]
mov dword [esp + 0x20], eax
lea eax, [edx + 0x44]
mov dword [esp + 0x30], eax
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
call dbg.optimize_node_left
test eax, eax
mov dword [esp + 0x18], eax
jne 0x45561b
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
call dbg.add_mml
mov eax, dword [esp + 0x34]
mov edi, dword [ebp + 4]
mov ecx, dword [esp + 0x64]
mov edx, dword [ebp + 8]
mov eax, dword [eax + 8]
test edi, edi
mov dword [esp + 0x2c], eax
jne 0x455b6f
or edx, dword [esp + 0x68]
mov eax, dword [ebp + 0xc]
mov esi, dword [esp + 0x6c]
mov dword [ebp + 8], edx
or esi, eax
and eax, 0x800
or eax, dword [esp + 0x6c]
test ecx, ecx
cmove eax, esi
mov esi, dword [esp + 0x88]
mov dword [ebp + 0xc], eax
mov dword [esp + 0x1c], esi
mov esi, dword [ebp + 0x54]
mov dword [esp + 0x3c], esi
mov esi, dword [ebp + 0x20]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x1c]
test esi, esi
jle 0x455bd1
test edi, edi
jne 0x455d50
mov esi, dword [esp + 0x7c]
or esi, eax
and eax, 0x800
or eax, dword [esp + 0x7c]
test ecx, ecx
cmove eax, esi
or dword [esp + 0x78], edx
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x11c]
test eax, eax
jle 0x455bf2
test edi, edi
jne 0x455bf2
mov eax, dword [esp + 0x110]
test eax, eax
jne 0x455bf2
or dword [esp + 0x114], edx
test ecx, ecx
jne 0x455d58
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x455c70
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x455e80
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x455c70
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x70]
call sym._concat_opt_exact_info.isra.12
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov byte [esp + 0x8c], 0
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
lea ecx, [esp + 0x70]
mov edx, edi
mov eax, esi
call dbg.select_opt_exact_info
lea ecx, [esp + 0xa4]
mov eax, esi
mov edx, edi
call dbg.select_opt_exact_info
mov eax, dword [ebp + 0x90]
test eax, eax
jle 0x455ec3
mov edx, dword [esp + 0x64]
test edx, edx
je 0x455cd0
cmp eax, edx
jle 0x455cb5
mov dword [ebp + 0x90], edx
mov eax, dword [ebp + 0x7c]
lea ecx, [ebp + 0x78]
test eax, eax
jne 0x456221
mov eax, dword [esp + 0x2c]
lea edx, [ebp + 0x10]
call dbg.select_opt_exact_info
nop
mov edi, dword [esp + 0x11c]
test edi, edi
je 0x455d1f
mov ecx, dword [ebp + 0xbc]
test ecx, ecx
je 0x455e10
mov eax, 0x8000
lea esi, [esp + 0x10c]
cdq
idiv ecx
mov ecx, eax
mov eax, 0x8000
cdq
idiv edi
mov edx, esi
mov dword [esp], eax
mov eax, dword [esp + 0x24]
call sym._comp_distance_value
test eax, eax
jle 0x455d1f
mov ecx, 0x45
mov edi, dword [esp + 0x24]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [esp + 0x20]
mov eax, ebp
call dbg.add_mml
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x455b29
jmp 0x45561b
mov ecx, 0x70
mov edi, ebp
rep movsd dword es:[edi], dword [esi]
jmp 0x455782
test ecx, ecx
je 0x455c02
mov dword [ebp + 0x54], 0
mov dword [ebp + 0x20], 0
jmp 0x455bfa
xor ecx, ecx
test byte [eax + 4], 1
mov esi, 1
jne case.0x4555ee.169
mov edi, dword [esp + 0x1c]
mov eax, ecx
mov edx, esi
shr eax, 5
shl edx, cl
test dword [edi + eax*4 + 8], edx
je 0x455dcb
cmp byte [ebp + ecx + 0xc0], 0
jne 0x455dcb
cmp ecx, 0x7f
mov edx, dword [ebx + 8]
mov eax, 4
mov byte [ebp + ecx + 0xc0], 1
jg 0x455dc5
lea eax, [edx + 0xc]
mov edx, ecx
mov dword [esp + 0x18], ecx
call sym._map_position_value.isra.7.part.8
mov ecx, dword [esp + 0x18]
add dword [ebp + 0xbc], eax
add ecx, 1
cmp ecx, 0x100
jne 0x455d85
mov dword [ebp], 1
mov dword [ebp + 4], 1
mov dword [esp + 0x18], 0
jmp 0x45561b
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp], edi
call sym._onigenc_strlen
mov edx, dword [ebx + 8]
imul eax, dword [edx + 8]
jmp 0x455955
lea esi, [esp + 0x10c]
jmp 0x455d14
jle 0x45632a
cmp eax, 0x800
je 0x455e40
cmp eax, 0x1000
jne 0x455992
nop
lea esi, [esi]
lea edx, [eax - 8]
and edx, 0xfffffff7
je 0x4561a1
lea edx, [eax - 0x400]
and edx, 0xfffffbff
je 0x4561a1
cmp eax, 0x20
je 0x4561a1
mov dword [ebp + 8], eax
mov dword [esp + 0x18], 0
jmp 0x45561b
lea eax, [ebp + 0x10]
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x70]
jmp 0x455c22
mov eax, dword [esp + 0x1c]
mov ecx, ebx
mov eax, dword [eax + 0x14]
call dbg.optimize_node_left
mov dword [esp + 0x18], eax
jmp 0x45561b
cmp byte [ebp + esi + 0xc0], 0
je 0x45573b
jmp 0x455726
mov edi, dword [esp + 0xf0]
test edi, edi
jle 0x455cd0
mov eax, dword [esp + 0xd8]
mov dword [ebp + 0x78], eax
mov eax, dword [esp + 0xdc]
mov dword [ebp + 0x7c], eax
mov eax, dword [esp + 0xe0]
mov dword [ebp + 0x80], eax
mov eax, dword [esp + 0xe4]
mov dword [ebp + 0x84], eax
mov eax, dword [esp + 0xe8]
mov dword [ebp + 0x88], eax
mov eax, dword [esp + 0xec]
mov dword [ebp + 0x8c], eax
mov eax, dword [esp + 0xf0]
mov dword [ebp + 0x90], eax
mov eax, dword [esp + 0xf4]
mov dword [ebp + 0x94], eax
mov eax, dword [esp + 0xf8]
mov dword [ebp + 0x98], eax
mov eax, dword [esp + 0xfc]
mov dword [ebp + 0x9c], eax
mov eax, dword [esp + 0x100]
mov dword [ebp + 0xa0], eax
mov eax, dword [esp + 0x104]
mov dword [ebp + 0xa4], eax
mov eax, dword [esp + 0x108]
mov dword [ebp + 0xa8], eax
jmp 0x455cd0
mov ecx, 0x45
mov edi, dword [esp + 0x24]
mov esi, 0x4831e0
rep movsd dword es:[edi], dword [esi]
jmp 0x45576a
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 4], 0xc
jne 0x455fff
mov edi, dword [ecx + 8]
test edi, edi
je 0x456013
xor edi, edi
jmp 0x455fb3
mov eax, dword [ebx + 8]
mov dword [esp + 4], 0xc
mov dword [esp], edi
call dword [eax + 0x30]
test eax, eax
jne 0x455ff4
cmp byte [ebp + edi + 0xc0], 0
jne 0x455ff4
cmp edi, 0x7f
mov edx, dword [ebx + 8]
mov eax, 4
mov byte [ebp + edi + 0xc0], 1
jg 0x455fee
lea eax, [edx + 0xc]
mov edx, edi
call sym._map_position_value.isra.7.part.8
add dword [ebp + 0xbc], eax
add edi, 1
cmp edi, 0x100
jne 0x455fb0
mov eax, 1
jmp 0x455902
mov eax, dword [ebx + 8]
mov dword [esp + 4], 0xc
mov dword [esp], edi
call dword [eax + 0x30]
test eax, eax
je 0x456054
cmp byte [ebp + edi + 0xc0], 0
jne 0x456054
cmp edi, 0x7f
mov edx, dword [ebx + 8]
mov eax, 4
mov byte [ebp + edi + 0xc0], 1
jg 0x45604e
lea eax, [edx + 0xc]
mov edx, edi
call sym._map_position_value.isra.7.part.8
add dword [ebp + 0xbc], eax
add edi, 1
cmp edi, 0x100
jne 0x456010
jmp 0x455fff
lea eax, [ebp + 0x10]
mov dword [esp], edi
call sym._concat_opt_exact_info_str.isra.13
test esi, esi
jle 0x4560a7
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 4]
movzx edx, byte [eax]
cmp byte [ebp + edx + 0xc0], 0
jne 0x4560a7
cmp edx, 0x7f
mov ecx, dword [ebx + 8]
mov eax, 4
mov byte [ebp + edx + 0xc0], 1
jg 0x4560a1
lea eax, [ecx + 0xc]
call sym._map_position_value.isra.7.part.8
add dword [ebp + 0xbc], eax
mov dword [ebp], esi
mov dword [ebp + 4], esi
jmp 0x45595b
cmp eax, 4
je 0x455e40
jg 0x456338
lea edx, [eax - 1]
cmp edx, 1
ja 0x455992
jmp 0x455e40
jle 0x456501
mov ecx, 0x70
mov edi, ebp
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x88]
test ecx, ecx
jle 0x456140
mov eax, dword [esp + 0x80]
test eax, eax
je 0x456140
cmp edx, 1
je 0x456140
cmp dword [ebp + 0x28], 0x17
jg 0x4564ea
lea edi, [ebp + 0x10]
mov esi, 2
jmp 0x45611a
cmp dword [ebp + 0x28], 0x17
jg 0x45644e
mov ecx, dword [ebx + 8]
lea edx, [esp + 0x70]
mov eax, edi
add esi, 1
call sym._concat_opt_exact_info.isra.12
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0xc]
cmp eax, esi
jge 0x456110
mov edx, eax
nop
lea esi, [esi]
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x10]
cmp ecx, edx
je 0x456159
mov dword [ebp + 0x20], 0
mov dword [ebp + 0x54], 0
cmp edx, 1
jle 0x456368
mov edi, dword [esp + 0x60]
mov dword [ebp + 0x54], 0
mov ebx, edx
mov eax, 0xffffffff
xor edx, edx
div ebx
mov esi, 0xffffffff
cmp edi, eax
jae 0x456186
imul ebx, edi
mov esi, ebx
cmp ecx, 0xffffffff
mov ebx, dword [esp + 0x64]
jne 0x4558bf
xor edx, edx
test ebx, ebx
setne dl
neg edx
jmp 0x4558e0
mov dword [ebp + 0xc], eax
mov dword [esp + 0x18], 0
jmp 0x45561b
mov edx, dword [esp + 0x1c]
mov esi, dword [ebx + 0xc]
mov eax, dword [edx + 0x10]
mov dword [ebx + 0xc], eax
mov eax, dword [edx + 0x14]
mov ecx, ebx
mov edx, ebp
call dbg.optimize_node_left
mov dword [ebx + 0xc], esi
mov dword [esp + 0x18], eax
jmp 0x45561b
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x28]
mov dword [esp + 0x18], eax
add eax, 1
cmp eax, 5
mov dword [ecx + 0x28], eax
jle 0x456464
mov eax, dword [ecx + 4]
mov ebx, ecx
xor ecx, ecx
test al, 1
je 0x4561fe
mov ecx, dword [ebx + 0x1c]
test al, 2
mov edx, 0xffffffff
je 0x45620e
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x20]
mov dword [ebp], ecx
mov dword [ebp + 4], edx
mov dword [esp + 0x18], 0
jmp 0x45561b
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
call dbg.select_opt_exact_info
jmp 0x455cd0
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebx + 0x10]
mov ebx, dword [ebx + 8]
mov edx, dword [eax + 8]
mov edi, dword [eax + 4]
mov dword [esp + 0x1c], edx
movzx edx, byte [edi]
cmp byte [ebp + edx + 0xc0], 0
jne 0x45627c
cmp edx, 0x7f
mov byte [ebp + edx + 0xc0], 1
mov eax, 4
jg 0x456276
lea eax, [ebx + 0xc]
mov dword [esp + 0x20], ecx
call sym._map_position_value.isra.7.part.8
mov ecx, dword [esp + 0x20]
add dword [ebp + 0xbc], eax
lea eax, [esp + 0x60]
and ecx, 0xbfffffff
mov dword [esp + 4], edi
mov dword [esp], ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 8], eax
call dword [ebx + 0x28]
test eax, eax
js 0x455878
je 0x45630e
lea edi, [esp + 0x68]
lea eax, [eax + eax*4]
lea ecx, [ebx + 0xc]
mov dword [esp + 0x24], esi
lea eax, [edi + eax*4]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x48]
mov esi, eax
mov dword [esp + 4], esi
mov eax, dword [edi]
mov dword [esp], eax
call dword [ebx + 0x1c]
movzx edx, byte [esp + 0x48]
cmp byte [ebp + edx + 0xc0], 0
jne 0x456301
cmp edx, 0x7f
mov byte [ebp + edx + 0xc0], 1
mov eax, 4
jg 0x4562fb
mov eax, dword [esp + 0x20]
call sym._map_position_value.isra.7.part.8
add dword [ebp + 0xbc], eax
add edi, 0x14
cmp dword [esp + 0x1c], edi
jne 0x4562c5
mov esi, dword [esp + 0x24]
mov eax, esi
jmp 0x455955
mov eax, dword [esp + 0x1c]
mov esi, dword [ebx + 0xc]
mov eax, dword [eax + 0x14]
mov edx, dword [eax + 0x10]
mov dword [ebx + 0xc], edx
jmp 0x4561c1
cmp eax, 0x20
jne 0x455992
jmp 0x455e40
cmp eax, 8
jne 0x455992
jmp 0x455e40
mov edi, dword [ebx + 4]
test edi, edi
jne 0x45635d
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 8]
cmp dword [eax], 3
je 0x4564c1
mov ebx, dword [esp + 0x64]
xor esi, esi
jmp 0x456193
test edx, edx
mov edi, dword [esp + 0x60]
jne 0x45616d
xor esi, esi
jmp 0x456186
mov eax, dword [esp + 0xbc]
test eax, eax
jle 0x455a85
mov eax, dword [esp + 0xa4]
mov dword [ebp + 0x78], eax
mov eax, dword [esp + 0xa8]
mov dword [ebp + 0x7c], eax
mov eax, dword [esp + 0xac]
mov dword [ebp + 0x80], eax
mov eax, dword [esp + 0xb0]
mov dword [ebp + 0x84], eax
mov eax, dword [esp + 0xb4]
mov dword [ebp + 0x88], eax
mov eax, dword [esp + 0xb8]
mov dword [ebp + 0x8c], eax
mov eax, dword [esp + 0xbc]
mov dword [ebp + 0x90], eax
mov eax, dword [esp + 0xc0]
mov dword [ebp + 0x94], eax
mov eax, dword [esp + 0xc4]
mov dword [ebp + 0x98], eax
mov eax, dword [esp + 0xc8]
mov dword [ebp + 0x9c], eax
mov eax, dword [esp + 0xcc]
mov dword [ebp + 0xa0], eax
mov eax, dword [esp + 0xd0]
mov dword [ebp + 0xa4], eax
mov eax, dword [esp + 0xd4]
mov dword [ebp + 0xa8], eax
jmp 0x455a85
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x40]
mov dword [ebp], eax
mov eax, dword [esp + 0x44]
mov dword [ebp + 4], eax
jmp 0x45561b
mov edx, eax
cmp esi, edx
jge 0x456140
mov dword [ebp + 0x20], 0
jmp 0x456140
mov eax, dword [esp + 0x1c]
mov ecx, ebx
mov eax, dword [eax + 0x14]
call dbg.optimize_node_left
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 8]
test ah, 0xc0
jne 0x45648b
test dword [ebp + 0xc], 0xc000
je 0x45561b
mov edx, dword [ebx + 0x14]
mov ecx, dword [esp + 0x1c]
mov ebx, dword [edx + 0x1c]
mov ecx, dword [ecx + 0xc]
mov edx, ebx
and edx, 1
cmp ecx, 0x1f
jg 0x4564ae
mov edx, 1
shl edx, cl
test edx, ebx
setne dl
test dl, dl
je 0x45561b
and ah, 0x3f
mov dword [ebp + 8], eax
jmp 0x45561b
mov eax, dword [esp + 0x1c]
mov esi, dword [eax + 0x14]
test esi, esi
je 0x45635d
mov eax, dword [ebp + 8]
mov edx, eax
or ah, 0x80
or dh, 0x40
test byte [ebx + 0xc], 4
cmove eax, edx
mov dword [ebp + 8], eax
jmp 0x45635d
mov esi, 2
jmp 0x456450
mov dword [esp + 0x18], 0xfffffffa
jmp 0x45561b
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x60]
mov ecx, dword [eax + 0x10]
jmp 0x45616d